| name | Hugo Migrate |
| description | This skill should be used when the user asks to "migrate jekyll", "convert jekyll to hugo", "import old blog", "migrate from jekyll", "migrate blog posts", "convert old posts", or wants to migrate existing Jekyll blog posts to Hugo format. |
| allowed-tools | ["Read","Write","Edit","Bash","Glob","Grep"] |
Jekyll to Hugo Migration
Migrate existing Jekyll blog posts to Hugo format.
Source
The old blog source path is read from .claude/blog.local.md (jekyll_source field). If not configured, prompt the user for the path (Jekyll Now, GitHub Pages):
- Posts in
_posts/ with YYYY-M-DD-slug.md format
- Images in
images/
- Subdirectories for drafts and other content
Workflow
1. Scan Source
Scan the configured Jekyll source directory _posts/ for .md files. Skip subdirectories unless user requests them explicitly. Present a summary:
Found 30 posts (2014-2021)
- 27 published posts
- 3 unpublished/draft posts
Subdirectories: home-drafts (3 files), misc (1 file)
Ask: "Migrate all published posts? Include drafts?"
2. Convert Each Post
For each selected post:
Filename: Convert YYYY-M-DD-slug.md to YYYY-MM-DD-slug.md (zero-pad month/day)
Frontmatter: Convert Jekyll to Hugo format:
| Jekyll | Hugo | Notes |
|---|
layout: post | Remove | Hugo uses section-based layouts |
title | title | Keep as-is |
published: false | draft: true | Invert logic |
| (missing date) | date: YYYY-MM-DD | Extract from filename |
| (no description) | description: "" | Flag for manual addition |
| (no tags) | tags: [] | Flag for manual addition |
| (no license) | license: "CC BY 4.0" | Add |
Content:
- Remove
<!-- more --> (Hugo uses <!--more--> without spaces)
- Convert image paths:
../images/foo.jpg to /images/foo.jpg or page bundle
- Convert Jekyll liquid tags (
{% highlight %}) to Hugo shortcodes or fenced code blocks
3. Copy Images
cp -r <source>/images/ static/images/
4. Migration Report
Migrated: 27 posts
Issues:
- 5 posts missing descriptions (SEO)
- 3 posts have no tags
- 2 posts reference images not found in images/
5. Create Brainstorm Docs for Drafts
If the blog plugin is installed, offer to create brainstorm documents for unfinished drafts found during migration. These represent ideas that fit the blog plugin's brainstorm pipeline.