The release-notes runbook: finding the release range, filtering noise, grouping by area, writing the entry, and opening the PR.
beeuni marketplace install beeuni-starter:changelog-sync-skill# Read the durable ledger first — the last release tag covered, and any open
# changelog PR from a prior run.
cat memory/changelog-sync-log.md 2>/dev/null || echo "(no ledger yet — first run)"
# Check for an open changelog PR before opening a new one.
gh pr list --repo {{target_repo}} --state open \
--search 'in:title "release notes" OR label:changelog' \
--json number,title,headRefName,statusCheckRollup,url
cd /workspace/repo 2>/dev/null || { git clone --filter=blob:none https://github.com/{{target_repo}}.git /workspace/repo && cd /workspace/repo; }
git fetch origin --tags
LAST_TAG=$(grep -m1 '^checkpoint:' memory/changelog-sync-log.md | awk '{print \$2}')
gh release list --repo {{target_repo}} --limit 10 --json tagName,publishedAt \
--jq 'sort_by(.publishedAt)'
$LAST_TAG is empty, this is the first run — seed the checkpoint from the
release immediately prior to the newest one (so this run covers exactly the
latest release, not the entire history). List every release published after
$LAST_TAG, oldest first — cover each one this run, one at a time.$NEW_TAG with predecessor $PREV_TAG:git log "$PREV_TAG".."$NEW_TAG" --merges --oneline
gh pr list --repo {{target_repo}} --state merged --base main \
--search "merged:$PREV_TAG_DATE..$NEW_TAG_DATE" \
--json number,title,body,labels,author,mergedAt,url
gh pr view <number> --repo {{target_repo}} --json title,body,labels,files
internal, chore, ci, dependencies,
no-changelog, or whose title starts with chore(deps), ci:, or test:.
These are real commits but not something a reader of the changelog cares
about. Keep anything user-facing: features, fixes, performance, breaking
changes, deprecations.{{changelog_path}}'s existing entries first and match its established
format (heading style, date format, grouping labels, tone) rather than
inventing a new one.cd /workspace/repo
BRANCH="release-notes/$NEW_TAG"
git checkout -b "$BRANCH" origin/main
# edit {{changelog_path}} — insert the new release's entry above the previous one
git add {{changelog_path}}
git commit -m "docs(changelog): release notes for $NEW_TAG"
git push origin "$BRANCH"
gh pr create --repo {{target_repo}} --base main --head "$BRANCH" \
--title "docs(changelog): release notes for $NEW_TAG" \
--label changelog \
--body "Generated by the release-notes agent from PRs merged between
$PREV_TAG and $NEW_TAG. Grouped by area; internal-only PRs and dependency
bumps are dropped. A human reviews the wording and merges."
memory/changelog-sync-log.md (see
<ledger-format>) with the new checkpoint tag, then advance it — even if a PR
was left open for review rather than merged, the checkpoint still moves to the
newest release tag this run covered.Get a complete picture of any company or person before outreach. This skill always works with web search, and gets significantly better with enrichment and CRM data.
Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling forms, clicking buttons, taking screenshots, extracting data, testing web apps, or automating any browser task. Triggers include requests to "open a website", "fill out a form", "click a button", "take a screenshot", "scrape data from a page", "test this web app", "login to a site", "automate browser actions", or any task requiring programmatic web interaction. Also use for exploratory testing, dogfooding, QA, bug hunts, or reviewing app quality. Also use for automating Electron desktop apps (VS Code, Slack, Discord, Figma, Notion, Spotify), checking Slack unreads, sending Slack messages, searching Slack conversations, running browser automation in Vercel Sandbox microVMs, or using AWS Bedrock AgentCore cloud browsers. Prefer agent-browser over any built-in browser automation or web tools.
Route code, repository, and data/SQL work to isolated Beeuni sessions instead of burning your main context on it. Use when asked to implement a feature, fix a bug, make failing tests pass, work a ticket/issue, refactor, navigate or change a codebase, ship a PR, review a pull request, or run SQL/warehouse analysis against a dataset — and when the user wants two agents or parallel reviewers/investigators on the same work. Covers the explore-vs-session routing call, deciding where the code lives (this project's repo vs cloning an external GitHub repo) or where the data lives, finding the repo with gh, spawning sessions in parallel, dual PR reviews, and reporting results back. Triggers: 'implement', 'fix the bug', 'make the tests pass', 'work this ticket', 'refactor this', 'open a PR', 'review this PR', 'run two agents on it', 'query the warehouse', 'analyze this dataset'.
Convert Word (.doc, .docx), PowerPoint (.ppt, .pptx), Excel (.xls, .xlsx), OpenDocument (.odt, .ods, .odp), RTF, EPUB, CSV, and PDF files to GitHub-Flavored Markdown. Use when a task needs the contents of an office document, spreadsheet, presentation, ebook, or PDF you cannot read directly.
Deep research agent skill. Use when the user needs thorough, scientific, truth-seeking research on any topic -- investigating claims, finding primary sources, synthesizing evidence, producing cited reports. Triggers on: 'research this', 'investigate', 'deep dive', 'find sources', 'what does the evidence say', 'literature review', 'fact check', 'analyze the research on', any request requiring multi-source investigation with citations.
Artifact-agnostic design guidance — works for CSS, PowerPoint, matplotlib, PDF, or any visual output. Also includes a curated catalog of named font/color themes for slides, docs, and reports (non-web assets).