summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-03-28 09:20:27 +0200
committerPaul Buetow <paul@buetow.org>2026-03-28 09:20:27 +0200
commit49aa3cc0da71c3fd23016ead96ba0c1725adde72 (patch)
tree609ef862fb0f3f983eccfb9568870b5c150e4bba
parent403a6ab9693d662d4bc4d923d43333f955a8326f (diff)
feat(skills): add gemtexter publishing workflow
-rw-r--r--gitsyncer/config.json7
-rw-r--r--prompts/skills/compose-blog-post/SKILL.md4
-rw-r--r--prompts/skills/gemtexter/SKILL.md85
-rw-r--r--prompts/skills/update-blog-post/SKILL.md9
4 files changed, 96 insertions, 9 deletions
diff --git a/gitsyncer/config.json b/gitsyncer/config.json
index a1e8258..744d119 100644
--- a/gitsyncer/config.json
+++ b/gitsyncer/config.json
@@ -29,5 +29,8 @@
],
"exclude_branches": [
"^codex/"
- ]
-} \ No newline at end of file
+ ],
+ "showcase_stats_branches": {
+ "foo.zone": "content-gemtext"
+ }
+}
diff --git a/prompts/skills/compose-blog-post/SKILL.md b/prompts/skills/compose-blog-post/SKILL.md
index 2aa639c..ead19b3 100644
--- a/prompts/skills/compose-blog-post/SKILL.md
+++ b/prompts/skills/compose-blog-post/SKILL.md
@@ -61,4 +61,6 @@ Compose a blog post in gemtext for the foo.zone gemfeed. **Only write or modify
10. **Preview and confirm.** Show a short preview (e.g. title, TOC, and first section) before writing the file. After saving, confirm that only `.gmi.tpl` files were created or modified (post template and index template) and that no `.gmi` files were changed.
-11. **Apply human writing style.** Use the `blog-writing-style` skill to ensure the content sounds authentically human — casual, personal, without corporate/marketing language or LLM-generated patterns.
+11. **Optional publish.** If the user wants the new post published after it is written, use the `gemtexter` skill to run the publish workflow and verify the live page on `https://foo.zone`.
+
+12. **Apply human writing style.** Use the `blog-writing-style` skill to ensure the content sounds authentically human — casual, personal, without corporate/marketing language or LLM-generated patterns.
diff --git a/prompts/skills/gemtexter/SKILL.md b/prompts/skills/gemtexter/SKILL.md
new file mode 100644
index 0000000..105f3f6
--- /dev/null
+++ b/prompts/skills/gemtexter/SKILL.md
@@ -0,0 +1,85 @@
+---
+name: gemtexter
+description: "Manage the Gemtexter-powered foo.zone site: generate output, publish content branches, troubleshoot publish issues, and verify changes on https://foo.zone. Use when working on gemtexter, foo.zone-content, or republishing the site."
+---
+
+# Gemtexter
+
+Manage the `gemtexter` static site workflow for `foo.zone`.
+
+## When to Use
+
+- Use when the user wants to generate, publish, preview, or troubleshoot `foo.zone`.
+- Use when working in `~/git/gemtexter` or `~/git/foo.zone-content`.
+- Use when verifying whether published content is live on `https://foo.zone`.
+
+## Key Paths
+
+- `~/git/gemtexter`: generator repo and CLI script.
+- `~/git/foo.zone-content/gemtext`: source content to edit.
+- `~/git/foo.zone-content/html`: generated HTML output.
+- `~/git/foo.zone-content/md`: generated Markdown output.
+
+## Rules
+
+1. Edit source content in `~/git/foo.zone-content/gemtext`.
+2. Prefer editing `.gmi.tpl` template files when a page is template-driven. Do not hand-edit generated `.gmi`, `.html`, or `.md` files unless the user explicitly asks for a generated-file fix.
+3. Run commands from `~/git/gemtexter`.
+4. If `gemtexter` output is too noisy for the terminal wrapper, redirect it to a log file in `/tmp/` and inspect with `tail`.
+5. If you use filtered generation for previewing, run a full `./gemtexter --generate` before publishing.
+
+## Common Commands
+
+### Full generate
+
+```bash
+./gemtexter --generate
+```
+
+### Filtered generate for one area
+
+```bash
+./gemtexter --generate 'about|notes|gemfeed'
+```
+
+### Publish everything
+
+```bash
+./gemtexter --publish
+```
+
+### Low-noise logged runs
+
+```bash
+./gemtexter --generate >/tmp/gemtexter-generate.log 2>&1
+./gemtexter --publish >/tmp/gemtexter-publish.log 2>&1
+tail -40 /tmp/gemtexter-generate.log
+tail -60 /tmp/gemtexter-publish.log
+```
+
+## Verification Workflow
+
+1. Identify the expected changed page URL.
+2. Fetch the page directly with `curl`, not just a browser-style fetch, because cached views can lag:
+
+```bash
+curl -fsSLI https://foo.zone/path/to/page.html
+curl -fsSL https://foo.zone/path/to/page.html | rg 'expected text'
+```
+
+3. Check `Last-Modified` and confirm the expected new content is present.
+4. If the site still looks stale, compare against the local generated file in `~/git/foo.zone-content/html/...` and inspect `/tmp/gemtexter-publish.log` for push failures.
+
+## Troubleshooting
+
+- `./gemtexter --publish` already runs generate, git add, and git sync.
+- If publish succeeded but the site is old, inspect the live page with `curl` before assuming publish failed.
+- If output branches look wrong, inspect `gemtexter.conf` and `lib/git.source.sh`.
+- For HTML theme issues, inspect `extras/html/themes/`.
+- For feed issues, inspect `lib/atomfeed.source.sh`.
+
+## Useful References
+
+- `~/git/gemtexter/README.md`
+- `~/git/gemtexter/gemtexter.conf`
+- `~/git/gemtexter/lib/`
diff --git a/prompts/skills/update-blog-post/SKILL.md b/prompts/skills/update-blog-post/SKILL.md
index 97084f9..f9198ca 100644
--- a/prompts/skills/update-blog-post/SKILL.md
+++ b/prompts/skills/update-blog-post/SKILL.md
@@ -20,11 +20,8 @@ Update an existing blog post in ~/git/foo.zone-content/gemtext/gemfeed/ in the g
5. Also add an "last updated" note to the blog post's publishing date, format like this "> Published at 2025-07-13T16:44:29+03:00, last updated Tue 27 Jan 10:09:08 EET 2026"
6. Show a diff or summary of the changes before writing.
7. After writing, commit and push the changes to git.
-8. Ask whether the updated blog post should be published. If yes, run:
- ```
- cd ~/git/gemtexter && ./gemtexter --publish
- ```
-9. Once published, verify that the changes appear on https://foo.zone by fetching the post URL.
-10. If the content matches, it means that the ./gemtexter --publish command didnt work correctly and investigate it for any errors in the output.
+8. Ask whether the updated blog post should be published. If yes, use the `gemtexter` skill to handle the publish workflow instead of embedding the publish commands here.
+9. Once published, use the `gemtexter` skill's verification workflow to confirm that the changes appear on `https://foo.zone`.
+10. If the published page does not match the expected content, investigate the `gemtexter` publish output and fix the publishing problem instead of assuming the content edit was wrong.
11. **Apply human writing style.** Use the `blog-writing-style` skill to ensure any new or modified content sounds authentically human — casual, personal, without corporate/marketing language or LLM-generated patterns.