3.0 KiB
3.0 KiB
AGENTS.md — Thanwer's Blog
Project
Hugo blog (multilingual EN + PT-BR) using the anubis2 theme as a git submodule (themes/anubis2, v1.6.0). Deployed via rsync to a VPS.
Commands
hugo server # dev server at localhost:1313
hugo # build to ./public/ (no minify)
./deploy.sh # pre-commit → hugo --minify → rsync
pre-commit run --all-files # quality check (lint, spell, links)
Quality toolchain
- pre-commit — runs on
./deploy.shor manually viapre-commit run --all-files. Includes: YAML/TOML/JSON check, EOF fixer, trailing whitespace, large file check, markdownlint, cspell (EN + PT-BR), lychee (link checker). - markdownlint — config:
.markdownlintrc. MD013 (line-length) disabled. - cspell — config:
.cspell.config.yaml. Adds@cspell/dict-pt-brviaadditional_dependencies. Custom word list for technical terms. - lychee — config:
.lychee.toml. Run locally with--root-dir staticto resolve/images/...links. Excludes social media domains andsshaudit.com.
All quality tooling must pass before deploy. No separate test framework.
Content conventions
- Posts:
content/posts/<slug>.md(EN),content/posts/<slug>.pt.md(PT-BR) - Images:
static/images/<filename>— referenced as/images/<filename>in markdown - PT translations set
canonical = "/posts/<en-slug>"in frontmatter lastmodmust use bare TOML datetime (no quotes):lastmod = 2026-05-09T00:00:00Z.- Archetype:
hugo new posts/<slug>.md→archetypes/default.md - Tags only (no categories):
tags = ["GNU/Linux", "Tools"]
Configuration quirks
- Theme requires all lowercase keys under
params.anubis2:colortheme,enablecolorthemeswitcher,readnextposts,socialicons, etc. Seethemes/anubis2/PARAMS.md. [params.anubis2.services.umami]keys are lowercase:id,url.- Analytics inject only in production (
hugo.IsProduction). Test locally:hugo server --environment production. - Config uses modern Hugo keys:
locale(notlanguageCode),label(notlanguageName). enableGitInfo = true—.Lastmodderives from git; template prefers.Params.lastmodwhen set.
Frontmatter reference
date = 2024-10-26T16:59:23-03:00
lastmod = 2026-05-09T00:00:00Z
title = 'Post Title'
description = "One-line summary for SEO and RSS"
tags = ["tag1", "tag2"]
canonical = "/posts/original-post" # PT translations only
Deprecated keys (avoid)
languageCode→locale;languageName→label;.Site.LanguageCode→.Site.Language.Locale
Theme overrides (layouts/ shadows theme)
layouts/partials/head.html— canonical fromParams.canonical, Umami analytics (prod only)layouts/partials/post-info.html— prefers.Params.lastmod, shows "[Last modified]" when different from datelayouts/partials/footer-extra.html— Ko-fi widgetlayouts/robots.txt— custom sitemap for both languages