hugo-theme について
hugo-themeは、中級から上級のHugo CMSテーマ開発者向けスキルです。テンプレート、アセットパイプライン、コンテンツ構成、アクセシビリティ、SEOをタスク別に案内し、パフォーマンスやテスト、デプロイも扱います。
主な機能
- 01テンプレート構成・レイアウト・パーシャルの設計
- 02CSS・JavaScript・画像アセットパイプラインの設定
- 03ショートコード・レンダーフック・多言語コンテンツの処理
- 04アクセシビリティとレスポンシブデザインの適用
- 05SEO出力・テスト・CI/CDの設定
活用シーン
- 01ベーステンプレートと再利用可能な部品を備えたテーマの構築
- 02テーマでのTailwindまたはHugo Pipesの設定
- 03多言語コンテンツとカスタムレンダーフックの実装
- 04テーマのアクセシビリティ、SEO、デプロイ手順の確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ magnus919/ agent-skills --skill hugo-themeインストール後、Claude Code で/hugo-themeを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
README.mdevals/evals.jsonreferences/asset-pipeline.mdcontent-and-i18n.mdcover-images.mddesign-accessibility.mdmodules-and-performance.mdseo-outputs-testing.mdshortcodes-and-hooks.mdtemplate-architecture.md詳細
Hugo テーマ開発
Hugo CMS テーマ開発の中級から上級向けパターンです。タスクに関連するリファレンスファイルを読み込んでください。
リファレンスファイル
| トピック | Hugo の最小バージョン | 読み込むタイミング | ファイル |
|---|---|---|---|
| テンプレートアーキテクチャ | v0.120+ | ブロックを使ったベーステンプレートの設定、テンプレートの検索順序(kind/layout/type/section)の理解、パーシャルの作成、パーシャルデコレーター(v0.154+)の使用、またはショートコードの基本を扱う場合 | references/template-architecture.md |
| アセットパイプライン | v0.161+ | Tailwind CSS v4(css.TailwindCSS)または v3(PostCSS)の統合、Hugo Pipes による SCSS/JS のバンドル、フィンガープリントと SRI の設定、srcset を使ったレスポンシブ画像の構築、またはページ/グローバル/リモートリソースの処理を行う場合 | references/asset-pipeline.md |
| ショートコードとレンダーフック | v0.112+ | 複雑なネストされたショートコード、raw HTML ショートコード、ショートコード内での Markdown レンダリング、リンク/画像/見出し/コードブロック用のカスタムレンダーフック、または言語別のコードブロックレンダリング(Mermaid など)が必要な場合 | references/shortcodes-and-hooks.md |
| コンテンツの構成と i18n | v0.126+ | リーフバンドルとブランチバンドル、ヘッドレスバンドル、カバー画像、カスタムタクソノミー、コンテンツアダプター(v0.126+、動的ページ)、セクション別レイアウト、アーキタイプ、または国際化(翻訳テーブル、多言語)を扱う場合 | references/content-and-i18n.md |
| カバー画像 | v0.120+ | 記事にカバー/ヒーロー画像を追加する、ページバンドルのリソースとフロントマターのパスの両方に対応する、レスポンシブな srcset を生成する、またはカバー画像がない場合を適切に処理する必要がある場合 | references/cover-images.md |
| モジュールとパフォーマンス | v0.109+ | Hugo Modules(init、import、vendor、workspace)を使用する、マウント設定を使ってテーマコンポーネントを構築する、partialCached でビルド速度を最適化する、キャッシュ TTL を設定する、または設定駆動型のテーマ設定(params、cascade)を使用する場合 | references/modules-and-performance.md |
| デザイン、UX、アクセシビリティ | v0.120+ | タイポグラフィシステム、アクセシブルなカラーパレット、デザイントークン、セマンティック HTML ランドマーク、ARIA パターン、キーボードナビゲーション、アクセシブルなフォーム、コンテンツ優先のレイアウト、レスポンシブナビゲーション、エンゲージメントパターン(読書の進捗、ダークモード切り替え、共有)、Core Web Vitals の最適化、コンテナクエリ、:has() セレクター、またはテスト/QA の自動化(axe-core、Lighthouse CI、ビジュアルリグレッション)が必要な場合 | references/design-accessibility.md |
| SEO、出力形式、CI/CD | v0.120+ | JSON-LD 構造化データ、Open Graph / Twitter Cards、カスタム出力形式(JSON、AMP)、サイトマップのカスタマイズ、またはテーマ向け CI/CD パイプライン(GitHub Actions、テスト、デプロイ)が必要な場合 | references/seo-outputs-testing.md |
クイックスタート
{{/* Minimal theme baseof.html — start here */}}
<!DOCTYPE html>
<html lang="{{ .Site.Language.Lang }}">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>{{ block "title" . }}{{ .Site.Title }}{{ end }}</title>
{{ block "styles" . }}{{ end }}
</head>
<body>
{{ block "header" . }}{{ partial "header.html" . }}{{ end }}
<main>{{ block "main" . }}{{ end }}</main>
{{ block "footer" . }}{{ partial "footer.html" . }}{{ end }}
{{ block "scripts" . }}{{ end }}
</body>
</html>
ステップごとに進める:新しいテーマの初期設定
# 1. Create the theme directory
mkdir -p themes/my-theme/{layouts/{_default,_markup,partials,shortcodes},assets/{scss,css,js}}
# 2. Create baseof.html (use the template above) defining blocks:
# title, styles, header, main, footer, scripts
# 3. Create partials for reusable components
# layouts/partials/header.html, footer.html, css.html
# 4. Set up your asset pipeline
# - SCSS → assets/scss/main.scss + toCSS partial
# - Tailwind → assets/css/main.css + css.TailwindCSS partial
# - JS → assets/js/main.js + js.Build
# 5. Configure hugo.yaml
# theme: my-theme
# See the reference file for your chosen CSS approach.
# 6. Build and verify
hugo --gc
ls public/ | head
ヒント: プロジェクトレベルの
layouts/はテーマのlayouts/を上書きします。テーマを単独でテストする場合は、上書きが必要になるまでプロジェクトのlayouts/ディレクトリを空にしておいてください。
よくある落とし穴
- SCSS には Hugo extended 版が必要です。 macOS/Homebrew のデフォルトの Hugo ビルドは extended 版ではありません。
hugo version | grep extendedで確認してください。 - Tailwind v4 では PostCSS ではなく
css.TailwindCSSを使用します。 v4 ではpostcss-cliをインストールしないでください。代わりにネイティブのパイプを直接使用します。Tailwind v3 では引き続き PostCSS パイプラインが必要です。 partialCachedは定数以外の引数を使うと古い結果を返します。 バリアント文字列(.Section、page.RelPermalink)は呼び出し元ごとに一意である必要があります。セクション名が重複すると、古い結果が返されます。hugo newはアーキタイプのディレクトリ構造に従います。 フラットファイルではなくページバンドルを作成するには、アーキタイプをarchetypes/<section>/index.mdに配置してください。resources.Getはstatic/ではなくassets/を参照します。static/内のファイルはそのままコピーされ、Hugo Pipes では処理されません。Pipes を通すファイルにはassets/を使用してください。- コンテンツアダプターテンプレートは、必ず
_content.gotmplという名前にする必要があります。 同じディレクトリに_content.gotmplがある場合、通常の.mdファイルは無視されます。 - レンダーフックテンプレートは
_markup/サブディレクトリに配置します。_default/直下ではありません。layouts/_default/_markup/render-link.htmlまたはセクション固有のlayouts/<type>/_markup/に配置する必要があります。 - パーシャル内の
blockは、ページテンプレート内のdefineと競合します。 パーシャル内(例:head.html)の{{ block "title" . }}は、ページテンプレート内(例:single.html)の{{ define "title" }}と同じ Go テンプレートの名前空間を使用します。両方がレンダーツリーに存在すると、Hugo はmultiple definition of template "title"というエラーを返します。解決方法:パーシャル内ではblockの代わりに、ページ変数(.Title、.Site.Title)を直接使用してください。blockはbaseof.htmlのシェル専用にしてください。
コメント
Markdown 対応