summaryrefslogtreecommitdiff
path: root/prompts
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-04-18 18:01:07 +0300
committerPaul Buetow <paul@buetow.org>2026-04-18 18:01:07 +0300
commit6eb893f068dbc3a387f6d9f633dfaf1bdb37bfa3 (patch)
treed8b8d6c036cc478e822a9b3c553bad680c4a9a13 /prompts
parent58aee219925d2dcf3c30997815f4b4a7e3894eb5 (diff)
update prompts
Diffstat (limited to 'prompts')
-rw-r--r--prompts/skills/miniflux-news/SKILL.md54
-rw-r--r--prompts/skills/snonux-microblog-post/SKILL.md60
2 files changed, 114 insertions, 0 deletions
diff --git a/prompts/skills/miniflux-news/SKILL.md b/prompts/skills/miniflux-news/SKILL.md
new file mode 100644
index 0000000..df03bd7
--- /dev/null
+++ b/prompts/skills/miniflux-news/SKILL.md
@@ -0,0 +1,54 @@
+---
+name: miniflux-news
+description: Fetch, summarize, and manage unread RSS feeds from a Miniflux instance. Reads API token from ~/.flux_token and instance URL from context or memory.
+---
+
+## When to Use
+
+Invoke when the user asks to:
+- Check, read, or summarize their RSS feeds / news
+- Get an overview of unread articles
+- Mark feeds as read
+- Drill into a specific story or feed
+
+## Instructions
+
+### Setup assumptions
+- API token is at `~/.flux_token` (single line)
+- Miniflux instance URL is stored in memory or provided by the user (e.g. `https://flux.example.org`)
+
+### Step 1 — Read token
+Read `~/.flux_token` to get the API token.
+
+### Step 2 — Fetch unread entries
+```bash
+curl -s -H "X-Auth-Token: <token>" \
+ "<instance>/v1/entries?status=unread&limit=500&order=published_at&direction=desc"
+```
+Check `total` in the response. If >500, paginate with `&offset=`.
+
+### Step 3 — Summarize
+Group entries by `feed.category.title`, then by `feed.title`. For each feed print:
+- Feed name and unread count
+- Bullet list of article titles (with brief content snippet if available)
+
+Present in markdown with `##` per category, `###` per feed.
+
+### Step 4 — Offer drill-down
+After the overview, invite the user to ask for more detail on any story. Fetch the full `content` field for that entry and/or use WebFetch on the article URL.
+
+### Step 5 — Mark as read (when asked)
+Collect all entry IDs, then:
+```bash
+curl -s -X PUT \
+ -H "X-Auth-Token: <token>" \
+ -H "Content-Type: application/json" \
+ -d '{"entry_ids": [<ids>], "status": "read"}' \
+ "<instance>/v1/entries"
+```
+HTTP 204 = success. Confirm to the user.
+
+### Notes
+- Never expose the token in user-facing output
+- If the user asks about a specific topic, filter entries by keyword across title/content before summarizing
+- Miniflux API base: `<instance>/v1/`
diff --git a/prompts/skills/snonux-microblog-post/SKILL.md b/prompts/skills/snonux-microblog-post/SKILL.md
new file mode 100644
index 0000000..509a327
--- /dev/null
+++ b/prompts/skills/snonux-microblog-post/SKILL.md
@@ -0,0 +1,60 @@
+---
+name: snonux-microblog-post
+description: Create and publish a new microblog post to snonux.foo using the snonux static generator. Handles text, markdown, and images dropped into the inbox directory.
+---
+
+# snonux-microblog-post
+
+Create and publish a short microblog post to snonux.foo.
+
+## When to Use
+
+- When the user wants to post something to snonux.foo (the microblog at snonux.foo).
+- When they share a thought, photo, link, or short update to publish.
+- When they say "post this to snonux" or "add this to the microblog".
+
+## Instructions
+
+1. **Keep it short.** snonux.foo is a microblog — posts are short by design. A sentence or two plus an optional image is the norm. Do not write long-form content here; that goes on foo.zone instead.
+
+2. **Inbox location.** Source files go into `~/.gosdir/snonux/inbox/`. The snonux tool consumes files from there on each run and removes them after processing.
+
+3. **Supported formats:**
+ - `.md` — Markdown (GitHub Flavored). Use for text posts, optionally with an embedded image.
+ - `.txt` — Plain text, rendered as-is.
+ - `.jpg` / `.png` / `.gif` — Standalone image post (auto-downscaled to ≤1024px at 80% quality by snonux).
+ - `.mp3` — Audio post with an embedded HTML5 player.
+
+4. **Markdown with an image.** Place both the `.md` file and the image file in the inbox with matching names. Reference the image with standard Markdown syntax:
+
+ ```markdown
+ Some short post text here.
+
+ ![alt text](image-filename.jpg)
+ ```
+
+ Both files are consumed together. The image is copied into the post's asset directory and the src is rewritten automatically.
+
+5. **Downloading external images.** If the user provides an image URL, download it with `curl -sL <url> -o /tmp/filename.jpg`, then optionally resize if very large (e.g. `magick /tmp/filename.jpg -resize 1024x1024\> -quality 85 /tmp/filename-resized.jpg`), then copy into the inbox.
+
+6. **Preview and confirm.** Before writing any files to the inbox or running snonux, show the user the composed post text (and note any image that will be included). Wait for explicit confirmation ("looks good", "go ahead", etc.) before proceeding. If the user requests changes, revise and show the preview again.
+
+7. **Run snonux.** Only after confirmation, write files to the inbox and run from `~/git/snonux/`:
+
+ ```sh
+ cd ~/git/snonux
+ ./snonux --input ~/.gosdir/snonux/inbox/ --output ~/.gosdir/snonux/dist/ --sync
+ ```
+
+ - `--sync` rsyncs the output to pi0 and pi1, publishing it live. Ask the user before adding `--sync` if unclear.
+ - Omit `--sync` for a local preview only.
+
+8. **Verify.** After running, check that a new timestamped directory appeared under `~/.gosdir/snonux/dist/posts/`. The inbox should be empty after a successful run.
+
+9. **Themes.** The theme is chosen randomly by default. The user can pass `--theme NAME` to fix it. Run `./snonux --list-themes` to see available themes.
+
+## Advanced usage
+
+For full documentation on flags, output structure, supported file types, and theme options, read:
+
+=> ~/git/snonux/README.md