Agent Skills: What's New

Draft a "What's New" community update for the Revel Discord covering changes across backend, frontend, and infra over a time window. Use when the user runs /whats-new or asks for a community changelog/release-roundup post for organizers (and the programmers in the room).

UncategorizedID: letsrevel/revel-backend/whats-new

Install this agent skill to your local

pnpm dlx add-skill https://github.com/letsrevel/revel-backend/tree/HEAD/.claude/skills/whats-new

Skill Files

Browse the full folder contents for whats-new.

Download Skill

Loading file tree…

.claude/skills/whats-new/SKILL.md

Skill Metadata

Name
whats-new
Description
Draft a "What's New" community update for the Revel Discord covering changes across backend, frontend, and infra over a time window. Use when the user runs /whats-new or asks for a community changelog/release-roundup post for organizers (and the programmers in the room).

What's New

Produces a Discord-ready "What's New" post for the Revel community and archives it on the published docs site. Audience: mostly organizers, but programmers too — every item leads with the organizer-facing benefit and carries a light technical detail (a flag, an endpoint, a behavior change) for the developers reading along.

Three repos, all public, all siblings of the cwd (revel-backend):

| Repo | Path | Primary source | |------|------|----------------| | Backend | . (cwd) | CHANGELOG.md (rich, dated, user-facing prose) | | Frontend | ../revel-frontend | CHANGELOG.md if present, else git/PR digging | | Infra | ../infra | git/PR digging (no changelog) |

The frontend is adopting the backend's changelog process. Always check for ../revel-frontend/CHANGELOG.md first and use it changelog-first when it exists; only fall back to git/PR digging for repos that have no changelog yet.

1. Parse the window

The argument is number + w|m (e.g. 1w, 2m, 6w). Default 1m if empty/unrecognized.

Compute the cutoff date (this is darwin/BSD date; for GNU use date -d "-2 months" +%F):

# N and UNIT parsed from the arg; UNIT is w (weeks) or m (months)
date -v-${N}${UNIT} +%F        # e.g. date -v-1m +%F  → cutoff YYYY-MM-DD
date +%F                       # today, for the edition header

Keep the human label for the header: "Last month" (1m), "Last 2 weeks" (2w), etc.

2. Gather changes (changelog-first, dig only gaps)

Backend — primary, already curated prose:

grep -nE '^## \[' CHANGELOG.md          # locate version sections + dates

Read every ## [X.Y.Z] - DATE section with DATE >= cutoff, plus [Unreleased]. These bullets are already user-facing — reuse their substance. Open a PR (gh pr view <n>) only when an entry is too terse to translate for a community audience.

Frontend — changelog-first if present, else git/PR:

test -f ../revel-frontend/CHANGELOG.md && echo "use changelog" || echo "dig git/PRs"
# changelog path: same as backend, against ../revel-frontend/CHANGELOG.md
# fallback path:
git -C ../revel-frontend log --since="<cutoff>" --first-parent --merges --pretty='%h %s'
gh -R letsrevel/revel-frontend pr list --state merged --search "merged:>=<cutoff>" \
   --limit 50 --json number,title,body,mergedAt

Infra — git/PR only:

git -C ../infra log --since="<cutoff>" --first-parent --merges --pretty='%h %s'
gh -R letsrevel/infra pr list --state merged --search "merged:>=<cutoff>" \
   --limit 50 --json number,title,body,mergedAt

When a PR title is opaque, read its body for the user-facing description. Drop the noise: pure CI/lint/test/dependency-bump/refactor commits unless they change observable behavior.

3. Compose — grouped by area

Group items into emoji-headed areas chosen from what's actually in the window. Suggested palette (use only the ones that apply; invent others as needed):

  • ## 🎟️ Events & Tickets
  • ## 💳 Payments, VAT & Reporting
  • ## 🔔 Notifications & Comms
  • ## 📋 Questionnaires & Polls
  • ## 🌍 Self-hosting & Infrastructure
  • ## 🛠️ Under the Hood (perf, security, developer-facing)

Per bullet: organizer benefit first, light tech detail inline. Example:

  • Mark an event as open-ended when there's no fixed finish — the page shows "Ongoing" instead of an end time (is_open_ended flag, propagates to recurring series).

Rules:

  • Discord markdown only: ##/### headers, **bold**, - bullets, `code`. No tables, no collapsibles.
  • Confident and community-friendly, concise, no marketing fluff.
  • Don't surface internal refactors, secrets, or per-PR links in the body.

4. The changelog footer (REQUIRED on every edition page)

Every edition page must end with a footer linking the changelog(s) — include a repo only if it has a changelog. mkdocs has no auto-link extension, so use markdown links:

**📋 Full changelogs:** [Backend](https://github.com/letsrevel/revel-backend/blob/main/CHANGELOG.md) · [Frontend](https://github.com/letsrevel/revel-frontend/blob/main/CHANGELOG.md)

Only list Frontend once ../revel-frontend/CHANGELOG.md exists; add Infra if/when it gets one.

5. Deliver

The published docs page is the canonical artifact; the Discord message is a short teaser that links to it.

a. Write a new edition page (one file per run): docs/whats-new/<today>-last-<slug>.md, where <slug> is the window label kebab-cased — 1mlast-month, 2mlast-2-months, 1wlast-week, 2wlast-2-weeks. Example: docs/whats-new/2026-06-22-last-month.md. Structure: # What's New — <date range> H1, the area sections (##), then the §4 changelog footer.

b. Index it — prepend a bullet to docs/whats-new/index.md right after the <!-- EDITIONS BELOW ... --> marker, newest first:

- [<date> — Last <window>](<filename-without-.md>.md) — <one-line teaser of the headline items>

Also add the edition to the left-sidebar nav in mkdocs.yml, under the What's New: section right after whats-new/index.md (newest first, matching the ADR section's per-entry layout):

  - What's New:
      - whats-new/index.md
      - whats-new/<filename>.md   # <-- prepend the new edition here, above older ones

c. Print the Discord message in chat, inside a fenced block so it's copy-pasteable — a SHORT teaser, not the full post: a punchy intro line, 4–6 headline bullets (the biggest items only), and a link to the published edition page:

📖 Full update → https://docs.letsrevel.io/whats-new/<slug>/

(The <slug> is the filename without .md. The URL goes live when docs deploy — that's expected; say so.) Keep it comfortably under Discord's 2000-char limit.

d. Do not commit (project rule: always ask first). Report the new file, the index update, and print the Discord teaser, then offer to commit.

Notes

  • The docs publish to https://docs.letsrevel.io under the "What's New" nav tab; each edition lives at https://docs.letsrevel.io/whats-new/<slug>/.
  • The edition page carries the full detail; the Discord teaser only summarizes and links to it.