Level 3 Practice: Mass-Produce Blog Posts with the /blog Command
If you want to understand the concepts and mechanics first, see the Level 3 concept guide.
The Skills section from Level 2 is done. Now I’m adding a blog feature. To eliminate the repetitive manual work of creating an MDX file and writing frontmatter every time I write an article, I’ll create a custom command that generates an article scaffold with just /blog <title>.
Who this is for: Anyone who has MCP integration set up and wants to automate repetitive tasks into a command.
Estimated time: 10 min read + 30 min hands-on
Carrying Over from the Previous Level
Section titled “Carrying Over from the Previous Level”.claude/settings.json (GitHub MCP) and src/components/Skills.tsx are complete from Level 2.
Create the /blog Command
Section titled “Create the /blog Command”Create .claude/commands/blog.md:
# Blog Post Generator
Generate an MDX file in `src/content/posts/` using `$ARGUMENTS` as the title.
## File Naming Rules
Convert the title to kebab-case for the filename.
Example: "TypeScript Type Inference" → `typescript-type-inference.mdx`
## Frontmatter Format
```mdx
---
title: "$ARGUMENTS"
description: "Summarize the content in 1–2 sentences"
publishedAt: "today's date (YYYY-MM-DD)"
tags: ["related-tag-1", "related-tag-2"]
---
```
## Article Structure
1. **Introduction** — Why learn this topic, who it's for, estimated reading time (3–4 sentences)
2. **Core Concept** — Beginner-friendly explanation with concrete examples
3. **Code Example** — At least one working sample
4. **Practical Use Cases** — How to apply this in real development
5. **Summary** — 3–5 bullet points covering the key takeaways
## Constraints
- Write in a clear, direct style
- Specify the language on all code blocks (e.g., ` ```typescript `)
- Aim for explanations accessible to beginnersRun It
Section titled “Run It”/blog TypeScript Type Inference for BeginnersGenerated src/content/posts/typescript-type-inference.mdx:
---
title: "TypeScript Type Inference for Beginners"
description: "A beginner-friendly explanation of how TypeScript automatically infers types, with concrete code examples."
publishedAt: "2026-03-29"
tags: ["TypeScript", "beginner", "type-system"]
---
When you start using TypeScript, you may feel that writing types every time is tedious. TypeScript actually has a feature called **type inference** that can automatically determine types in many situations.
**Who this is for**: Developers who are just getting started with TypeScript.
**Estimated reading time**: About 10 minutes
## What Is Type Inference?
TypeScript infers types automatically from the values assigned to variables.
```typescript
// TypeScript infers these without explicit annotations
const name = "Alice" // inferred as string
const age = 25 // inferred as number
const isActive = true // inferred as boolean
// Incorrect assignments become errors
// name = 123 // Error: Type 'number' is not assignable to type 'string'…
Generate another one:
/blog Introduction to Next.js App Router
`src/content/posts/nextjs-app-router-intro.mdx` is generated.
## Add a Code Review Command Too
`.claude/commands/review.md`:
```markdown
# Code Review
Check the current change diff (git diff) and review it from the following angles:
1. TypeScript type safety (use of `any`, missing type definitions)
2. React best practices (unnecessary re-renders, `useEffect` dependency arrays)
3. Accessibility (`alt` attributes, ARIA labels)
List issues in the format "Severity (high/medium/low): description".
If there are no issues, respond with "✅ Review complete: no issues found".The my-portfolio at This Point
Section titled “The my-portfolio at This Point”.claude/commands/blog.md— blog post generation command.claude/commands/review.md— code review commandsrc/content/posts/typescript-type-inference.mdxsrc/content/posts/nextjs-app-router-intro.mdx
Next Level
Section titled “Next Level”I can now produce blog posts at scale. However, the writing style varies from article to article. Next I’ll design memory to unify quality.
Level 4 Practice: Write Style Rules in Memory to Unify Quality