Files
davila7__claude-code-templates/.claude/commands/create-blog-article.md
Dani 7de42f1dd8 chore: Update CLAUDE.md, blog articles, and add simple-notifications-hook post
- Simplify CLAUDE.md documentation (remove verbose sections)
- Improve create-blog-article command with better template instructions
- Add new blog article: Simple Notifications Hook
- Update blog articles metadata and cleanup HTML
- Enhance blog loader with improved filtering

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-03 17:27:14 -05:00

15 KiB

allowed-tools, argument-hint, description
allowed-tools argument-hint description
Read, Write, Edit, Bash(python3:*), Bash(mkdir:*), Bash(rm:*) <component-path> Create an SEO-optimized blog article for a Claude Code component with AI-generated cover image

Create Blog Article for Claude Code Component

You will create a complete, SEO-optimized blog article for a Claude Code component.

Component Path Argument

Component path provided: $ARGUMENTS

Expected format examples:

  • development-team/frontend-developer (for agents)
  • supabase (for MCPs)
  • productivity/nowait (for skills)

Step 1: Identify Component Type and Read Component File

Based on the path structure, determine the component type:

  • If path has /, could be an agent, MCP, command, skill, or hook in a folder
  • Single word could be MCP, command, or skill

Read the component file:

  • Agents: cli-tool/components/agents/$ARGUMENTS.md (e.g., development-team/frontend-developer.md)
  • MCPs: cli-tool/components/mcps/$ARGUMENTS.json (e.g., devtools/context7.json)
  • Skills: cli-tool/components/skills/$ARGUMENTS/SKILL.md
  • Commands: cli-tool/components/commands/$ARGUMENTS.md (e.g., setup/ci-cd-pipeline.md)
  • Hooks: cli-tool/components/hooks/$ARGUMENTS.md

CRITICAL: Use find or grep to locate the actual file path first, then extract folder/name structure.

Extract from the component file:

  • name: Component name
  • description: Component description
  • tools: Available tools (for agents)
  • Key capabilities and focus areas from the content

Step 2: Generate Component-Specific Blog ID and Names

From the component path, create:

  • Blog ID: Convert path to blog-friendly ID

    • Example: development-team/frontend-developer → frontend-developer-agent
    • Example: supabase → supabase-mcp
    • Example: productivity/nowait → nowait-skill
  • Component Name: Human-readable name

    • Example: frontend-developer → Frontend Developer
    • Example: supabase → Supabase
  • Component Type: Uppercase type

    • AGENT, MCP, SKILL, COMMAND, HOOK

Step 3: Generate Cover Image FIRST

CRITICAL: Generate the cover image BEFORE creating the HTML file.

Use the Python script to generate the image:

python3 scripts/generate_blog_images.py

But first, temporarily add a new entry to docs/blog/blog-articles.json with:

{
  "id": "[blog-id]",
  "title": "Temporary",
  "description": "Temporary",
  "url": "[blog-id]/",
  "image": "https://www.aitmpl.com/blog/assets/[blog-id]-cover.png",
  "category": "[Component Type]",
  "publishDate": "2025-01-15",
  "readTime": "4 min read",
  "tags": ["Claude Code"],
  "difficulty": "basic",
  "featured": true,
  "order": 999
}

Then run the script, which will:

  1. Detect the new entry
  2. Find the component path
  3. Generate the image at docs/blog/assets/[blog-id]-cover.png

After image generation, update the entry with correct information.

Step 4: Create Blog Article HTML

Create directory:

mkdir -p docs/blog/[blog-id]

CRITICAL PROCESS:

  1. First, READ the template file completely:

    Read docs/blog/code-reviewer-agent/index.html
    
  2. Copy the ENTIRE content to the new file location:

    Write docs/blog/[blog-id]/index.html
    
  3. Then, ONLY replace the specific content sections (listed below)

DO NOT:

  • ❌ Create HTML from scratch
  • ❌ Use a different template
  • ❌ Simplify or remove any scripts
  • ❌ Change the header/footer structure
  • ❌ Modify CSS paths or class names

Create docs/blog/[blog-id]/index.html using this process:

HTML Template Structure

CRITICAL: Use docs/blog/code-reviewer-agent/index.html as the EXACT base template.

This template includes ALL required components:

  • ✅ Header with class="header" (NOT "blog-header")
  • ✅ ASCII art logo in terminal-header
  • ✅ Copy as Markdown button (id="copy-markdown-btn")
  • ✅ Proper article structure: article-header → article-body → article-content-full
  • ✅ "Explore Components" banner at the end of content
  • ✅ Footer with ASCII art and links
  • ✅ CodeCopy script (adds copy buttons to code blocks)
  • ✅ MarkdownCopier script (copy entire article as markdown)
  • ✅ Mermaid diagram support script

DO NOT create custom HTML structure - copy the template EXACTLY and only replace the content-specific parts.

How to Use the Template:

  1. Copy the entire file from code-reviewer-agent/index.html
  2. Only replace these specific content areas:
    • SEO meta tags (title, description, keywords, Open Graph)
    • Article title and subtitle in <h1> and <p class="article-subtitle">
    • Tags in <div class="article-tags">
    • Main content inside <div class="article-content-full"> (everything between the opening and closing div)
    • Cover image src and alt text
  3. Keep EVERYTHING else unchanged:
    • Header structure and navigation
    • Copy Markdown button
    • Footer with ASCII art
    • All three scripts at the end (CodeCopy, MarkdownCopier, Mermaid)
    • CSS links and paths

Key SEO Elements to Customize:

Title Tag (Line 6):

<title>[Component Name] for Claude Code: [Key Technologies] Expert AI Assistant</title>

Meta Description (Line 26):

<meta name="description" content="Install the [Component Name] for Claude Code to [main benefit]. AI-powered [component type] for [key features].">

Open Graph Tags (Lines 28-32):

<meta property="og:title" content="[Component Name] for Claude Code: [Key Technologies]">
<meta property="og:description" content="Install the [Component Name] for Claude Code...">

Keywords (Line 58): Focus on: Claude Code, Component Type, Main Technologies

<meta name="keywords" content="Claude Code [type], [Component Name], Claude Code [tech1], [tech2], AI [domain] development, ...">

Structured Data (Lines 81-136):

{
  "@type": "BlogPosting",
  "headline": "[Component Name] for Claude Code: [Technologies]",
  "keywords": "Claude Code [type], [Component Name], ...",
  "articleSection": "Claude Code [Type]s",
  "about": [
    {"@type": "Thing", "name": "Claude Code"},
    {"@type": "Thing", "name": "[Component Type]"},
    ...
  ]
}

Article Header (Lines 189-201):

<h1 class="article-title">[Component Name] for Claude Code: [Technologies]</h1>
<p class="article-subtitle">Learn how to install and use the [Component Name] for Claude Code to [benefits].</p>
<div class="article-tags">
  <span class="tag">Claude Code</span>
  <span class="tag">[Type]</span>
  <span class="tag">[Tech1]</span>
  <span class="tag">[Tech2]</span>
</div>

Content Sections:

What is the [Component Name]? (Lines 210-212):

  • Brief 2-3 sentence overview
  • Focus on what it does and key benefits
  • Mention Claude Code and component type

Mermaid Diagram (After "What is..." section): Add a simple Mermaid flow diagram (3-4 nodes max):

<!-- Mermaid Diagram -->
<div class="mermaid-diagram" style="background: #1a1a1a; border: 1px solid #333; border-radius: 8px; padding: 2rem; margin: 2rem 0; text-align: center;">
    <pre class="mermaid">
graph LR
    A[Input/Trigger] --> B[Component Name]
    B --> C[Process/Output]
    C --> D[Result]

    style B fill:#F97316,stroke:#fff,color:#000
    </pre>
</div>

Diagram examples by type:

  • Agents: [👤 User Prompt] --> [🤖 Agent Name] --> [⚛️ Code Output] --> [📦 Your Project]
  • MCPs: [💻 Claude Code] --> [🔌 MCP Name] --> [📚 Data/Docs] --> [✨ Result]
  • Skills: [👤 User Request] --> [🔍 Skill Auto-Triggered] --> [📚 Progressive Loading] --> [✅ Task Complete]
  • Commands: [⚙️ Command Call] --> [🔧 Command Logic] --> [📝 Action] --> [✓ Complete]
  • Hooks: [📝 Event] --> [🪝 Hook Name] --> [⚡ Automation] --> [✅ Done]

IMPORTANT:

  • Avoid using special characters like / or \ inside Mermaid node labels as they cause syntax errors
  • Skills are NOT slash commands - they activate automatically when relevant to the user's request

Key Capabilities (Lines 214-223):

  • Bullet list of 5-7 main capabilities
  • Each capability with brief explanation in parentheses

Installation (Lines 225-241):

<h2>Installation</h2>
<p>Install the [Component Name] using the Claude Code Templates CLI:</p>
<pre><code class="language-bash">npx claude-code-templates@latest --[type] [folder/name]</code></pre>

<p><strong>Where is the [type] installed?</strong></p>
<p>The [type] is saved in <code>.claude/[type]s/[name].[extension]</code> in your project directory:</p>

<pre><code class="language-bash">your-project/
├── .claude/
│   └── [type]s/
│       └── [name].[md|json]    # ← [Type] installed here
├── src/
│   └── components/
├── package.json
└── README.md</code></pre>

CRITICAL INSTALLATION COMMAND FORMAT:

  • Agents: --agent folder/name (e.g., --agent development-team/frontend-developer)
  • MCPs: --mcp folder/name (e.g., --mcp devtools/context7)
  • Commands: --command folder/name (e.g., --command setup/ci-cd)
  • Skills: --skill name (e.g., --skill pdf-processing)
  • Hooks: --hook folder/name (e.g., --hook git/auto-commit)

ALWAYS use the FULL path with folder/ - Use find command to verify the correct path first!

How to Use (Lines 243-251):

<h2>How to Use the [Type]</h2>
<p>Start Claude Code and explicitly request the [type] in your prompt:</p>

<pre><code class="language-bash"># Start Claude Code
claude

# Then write your prompt requesting the [type]
> Use the [name] [type] to [example task]</code></pre>

Usage Examples (Lines 253-277): Create 3 practical examples:

<h3>Example 1: [Specific Use Case]</h3>
<pre><code class="language-bash">claude

> Use the [name] [type] to [specific task with details]</code></pre>

<p><strong>Result:</strong> [Expected outcome]</p>

Official Documentation (Lines 276-277):

<h2>Official Documentation</h2>
<p>For more information about [type]s in Claude Code, see the <a href="https://code.claude.com/docs/en/[appropriate-doc-page]?utm_source=aitmpl&utm_medium=referral&utm_campaign=blog" target="_blank">official documentation</a>.</p>

CRITICAL: All URLs to claude.com documentation MUST include UTM parameters: ?utm_source=aitmpl&utm_medium=referral&utm_campaign=blog

Critical Path Requirements:

  1. Image path (Line 207): ../assets/[blog-id]-cover.png
  2. CSS paths (Lines 62-63): ../../css/styles.css, ../../css/blog.css
  3. Navigation links: ../index.html for blog home, ../../index.html for main site

Step 5: Update blog-articles.json

Update the temporary entry in docs/blog/blog-articles.json with complete information:

{
  "id": "[blog-id]",
  "title": "[Component Name] for Claude Code: [Subtitle with Technologies]",
  "description": "Complete guide to the [Component Name] - [what it does]. [Key benefits]. [Installation count if available]+ installations.",
  "url": "[blog-id]/",
  "image": "assets/[blog-id]-cover.png",
  "category": "[Component Type Category]",
  "publishDate": "[Current Date YYYY-MM-DD]",
  "readTime": "4 min read",
  "tags": ["Claude Code", "[Type]", "[Tech1]", "[Tech2]", "[Tech3]"],
  "difficulty": "basic|intermediate|advanced",
  "featured": true,
  "order": [next available order number]
}

Category Guidelines:

  • Agents → "Agents"
  • MCPs → "MCP"
  • Skills → "Skills"
  • Commands → "Development" or specific category
  • Hooks → "Automation"

Difficulty Guidelines:

  • basic: Simple to use, no configuration needed
  • intermediate: Requires some setup or understanding
  • advanced: Complex workflows or configuration

Scripts at End of HTML:

The template already includes ALL required scripts before </body>:

  1. CodeCopy script (~180 lines) - Adds copy buttons to code blocks
  2. MarkdownCopier script (~160 lines) - Copy article as Markdown functionality
  3. Mermaid script (~15 lines) - Diagram rendering support

CRITICAL: These scripts are ALREADY in the template. DO NOT:

  • ❌ Remove them
  • ❌ Modify them
  • ❌ Duplicate them
  • ❌ Create simplified versions

If you copy the template correctly, these scripts will already be present and working.

Step 6: Final Checklist

Verify before completion:

Files & Structure:

  • Cover image exists at docs/blog/assets/[blog-id]-cover.png
  • Blog article exists at docs/blog/[blog-id]/index.html
  • HTML file copied from code-reviewer-agent/index.html template
  • Header has class="header" (NOT "blog-header")
  • Copy Markdown button present with id="copy-markdown-btn"
  • Article structure: article-header → article-body → article-content-full
  • "Explore Components" banner present at end of content
  • Footer with ASCII art and links present

Scripts (verify all 3 are present):

  • CodeCopy script present (~180 lines before Mermaid)
  • MarkdownCopier script present (~160 lines before Mermaid)
  • Mermaid script present (last script before </body>)

Content:

  • Mermaid diagram added after "What is..." section
  • All paths are relative (images, CSS, links)
  • Installation command shows correct folder/name structure
  • File tree shows correct installation path
  • SEO meta tags include "Claude Code" prominently
  • Keywords focus on: Claude Code > Component Type > Technologies
  • Structured data includes all required fields
  • blog-articles.json updated with new entry
  • All tags include "Claude Code" as first tag
  • Examples are specific to the component's capabilities
  • All claude.com URLs include UTM parameters

SEO Optimization Requirements

Every blog article MUST:

  1. Title Tag: Include "Claude Code", component name, and 1-2 key technologies
  2. Meta Description: Start with action verb, mention Claude Code, include key benefit
  3. Keywords: First 3 keywords should be "Claude Code [type]", "[Component Name]", "Claude Code [main-tech]"
  4. H1: Match title tag structure
  5. First Paragraph: Mention "Claude Code" in first sentence
  6. Tags: Always start with "Claude Code" tag
  7. Structured Data: Include Claude Code as both Thing and SoftwareApplication

Error Handling

If component file not found:

  • Try alternative paths (with/without folders)
  • Check component type variations
  • Ask user to verify component path

If image generation fails:

  • Check if GOOGLE_API_KEY is set
  • Verify blog-articles.json entry
  • Check scripts/generate_blog_images.py exists

Success Message

When complete, show:

✅ Blog article created successfully!

📁 Files created:
   - docs/blog/[blog-id]/index.html
   - docs/blog/assets/[blog-id]-cover.png

📝 Updated:
   - docs/blog/blog-articles.json

🔗 View locally:
   http://localhost:8000/blog/[blog-id]/

🚀 Ready to commit and deploy!