From 8566118a2fc1df07fca43c5b06526bf3bf5cf819 Mon Sep 17 00:00:00 2001 From: estorozhenko Date: Sun, 6 Sep 2026 13:50:50 +0000 Subject: [PATCH] Initial commit: Hermes skill hugo-site-publishing --- SKILL.md | 94 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 SKILL.md diff --git a/SKILL.md b/SKILL.md new file mode 100644 index 0000000..2956876 --- /dev/null +++ b/SKILL.md @@ -0,0 +1,94 @@ +--- +name: hugo-site-publishing +description: >- + Publish Hugo articles on dedinit.ru (bundles, hero.svg). +tags: + - hugo + - blog + - static-site + - gitverse + - hero-svg +category: creative +--- + +# Hugo site publishing (dedinit.ru) + +## When to Use + +- Write / publish a new article in `/opt/dedinit.ru` (Hugo site, gitverse repo) +- Create the hero SVG for an article bundle +- Build and verify the site locally before deploy +- Diagnose «article missing from the built site» + +## Article bundle layout + +``` +content/posts//index.md +content/posts//hero.svg +``` + +Existing convention example: `20260830 - local aux models hermes/index.md`. + +Frontmatter (copy the style of the newest post): + +```yaml +--- +date: '2026-08-31T03:00:00+03:00' +lastmod: '2026-08-31T03:00:00+03:00' +draft: false +title: '...' +slug: '...' +--- +``` + +hero.svg: `viewBox="0 0 1200 400"`, bg `#0a0c10`, hexagon pattern stroke +`#1a2332`, title ~36px monospace `#58a6ff`, subtitle ~20px `#8b949e`, accent +line. Copy the newest post's hero.svg as the base and edit — keeps a uniform +look. + +## CRITICAL PITFALL — future-dated page is silently dropped + +Hugo does NOT publish pages whose `date` is in the future +(default `buildFuture=false`) and gives **no warning**. Symptom: + +- `hugo list all` shows the page with `draft=false` ✅ +- but the built HTML is absent from `public/`, sitemap.xml, index.xml ❌ + +Cause example (2026-08-31): server time 03:57 MSK, article `date: +'2026-08-31T12:00:00+03:00'` → future → dropped. + +Fix: set `date` in the PAST (current time minus margin, same timezone), or +force with `hugo --buildFuture` (for a preview only — the published repo +must not depend on it). + +## Build & verify + +- hugo is NOT preinstalled on this host — download the extended binary: + ``` + curl -sL "https://api.github.com/repos/gohugoio/hugo/releases/latest" \ + | grep -oE 'browser_download_url.*_extended.*linux-amd64.tar.gz' | head -1 + # unpack to /usr/local/bin/hugo + ``` +- Build: `cd /opt/dedinit.ru && hugo --minify` +- Verify article really published: + `ls public///index.html` (permalink is `/:year/:slug/`, NOT + /posts/), `grep -o '[^<]*'`, `grep -o 'hero.svg'` +- If missing: `hugo list all | grep ` (present?), check `date` not + future, `hugo --logLevel debug`. + +## Publish + +1. `git add "content/posts//"` + commit + `git push origin main` + (gitverse is the source of truth; gitea pull-mirror follows). +2. Deploy: `make deploy` = rsync `public/` → + `kpa39l_dedinit@kpa39l.myjino.ru:2222:/dedinit.ru/` (credentials live in + `winscp_script.txt` / Makefile vars: HOST/PORT/USERNAME/REMOTE_PATH). + **Verify reachability first** — 2026-08 the Jino SFTP port was refused + from the monitoring host and the stored password rejected; the live site + already worked, so user deploys from their own machine when the channel + is down. Don't loop retrying; report and ask. + +## Related Skills + +- `git-forge-management` — gitverse/gitea repo + mirror workflows +- `tproxy-web-proxy` / `mtproto-proxy` — the article topics themselves \ No newline at end of file