diff options
| author | Paul Buetow <paul@buetow.org> | 2026-03-28 09:20:27 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-03-28 09:20:27 +0200 |
| commit | 49aa3cc0da71c3fd23016ead96ba0c1725adde72 (patch) | |
| tree | 609ef862fb0f3f983eccfb9568870b5c150e4bba | |
| parent | 403a6ab9693d662d4bc4d923d43333f955a8326f (diff) | |
feat(skills): add gemtexter publishing workflow
| -rw-r--r-- | gitsyncer/config.json | 7 | ||||
| -rw-r--r-- | prompts/skills/compose-blog-post/SKILL.md | 4 | ||||
| -rw-r--r-- | prompts/skills/gemtexter/SKILL.md | 85 | ||||
| -rw-r--r-- | prompts/skills/update-blog-post/SKILL.md | 9 |
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. |
