Skip to main content

weekly-summary

Write a Slack-ready summary of Quarto 2 (q2) work landed on main since a point in the past — a short themes paragraph plus a changelog-style bullet list of merged PRs. Use when the user says "weekly summary", "what landed this week", "summarize recent work for Slack", or invokes /weekly-summary [since]. The optional argument is a date (2026-10-27), a relative span ("7 days", "2 weeks"), or a git ref/tag; the default is 7 days.

Source facts

Repository
quarto-dev/q2
Last source activity
November 3, 2026 at 20:30
Detected SKILL.md language
English
Stars
302
Forks
21

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
weekly-summary
description
Write a Slack-ready summary of Quarto 2 (q2) work landed on main since a point in the past — a short themes paragraph plus a changelog-style bullet list of merged PRs. Use when the user says "weekly summary", "what landed this week", "summarize recent work for Slack", or invokes /weekly-summary [since]. The optional argument is a date (2026-10-27), a relative span ("7 days", "2 weeks"), or a git ref/tag; the default is 7 days.
# Weekly summary Produces a message the user will paste into Slack and lightly edit. The audience is the Quarto team and adjacent colleagues: people who know what Quarto is but did not follow every PR. Write for them, not for the PR authors. Read-only: this skill fetches and reads; it never commits, pushes, comments, or posts anywhere. ## 1. Resolve the window Parse the argument into a `SINCE` date (UTC, `YYYY-MM-DD`): - empty → today minus 7 days - `YYYY-MM-DD` → as given - `N days` / `N weeks` → today minus that span - anything else → treat as a git ref; `SINCE` is that commit's committer date (`git log -1 --format=%cs <ref>`) State the window in one line before gathering ("Summarizing main from 2026-10-27 to 2026-11-03"). ## 2. Gather Fetch first — the local `main` is often behind, and the summary must reflect `origin/main`: ```bash git fetch origin main --quiet ``` **Merged PRs into main** (the backbone of the summary): ```bash gh pr list --repo quarto-dev/q2 --state merged --base main \ --search "merged:>=$SINCE" --limit 300 \ --json number,title,author,mergedAt,headRefName,labels,additions,deletions,body \ --jq '.[] | {number, title, author: .author.login, mergedAt, head: .headRefName, labels: [.labels[].name], size: (.additions + .deletions), body: (.body // "" | .[0:800])}' ``` If the result count hits the limit, say so and narrow the window rather than silently truncating. **Direct commits to main** (pushes that bypassed a PR — usually docs, skills, small fixes): first-parent, non-merge commits in the window. ```bash git log origin/main --first-parent --no-merges --since="$SINCE" \ --format='%h%x09%an%x09%s' ``` Drop any whose subject ends in `(#NNN)` — those are squash-merged PRs already counted above. **Integration branches.** PRs merged into a `feature/*` or `refactor/*` branch (not main) are not shipped yet. Don't list them individually; when the integration branch itself lands on main, its PR covers them. If one is notably active, a single "in progress" line in the themes paragraph is enough: ```bash gh pr list --repo quarto-dev/q2 --state merged --search "merged:>=$SINCE -base:main" \ --limit 100 --json number,title,baseRefName ``` ## 3. Understand before writing Titles alone mislead. For each PR, use the title, branch name, and body excerpt to decide: - **What changed for a user** (a Quarto author, a hub-client user, an extension author) — or, for internal work, what it enables. - **Area** — pick from this list, adding one only if a cluster clearly doesn't fit: - *Rendering & formats* (HTML, PDF/Typst/LaTeX, docx, revealjs, websites, books, listings) - *Authoring features* (crossrefs, citations, shortcodes, callouts, brand, layout) - *Execution & engines* (knitr, jupyter, `execute:` options) - *Extensions & Lua filters* - *Preview & hub-client* (q2 preview, quarto-hub web app, collaboration, MCP) - *Parser & language* (tree-sitter-qmd, pampa, diagnostics) - *Q1 compatibility* — use when the PR's point is matching Quarto 1 behavior - *Infrastructure* (CI, build, deps, perf, test harness, agent tooling/skills) - **Weight** — new capability > user-visible fix > internal cleanup. Size (`additions + deletions`) is a weak hint, not a ranking. When a body is empty and the title is cryptic, read the diffstat (`gh pr view N --json files --jq '.files[].path'`) rather than guessing. Do this sparingly; most PRs are clear from title + branch + body. **Collapse noise**: dependency bumps (Snyk, Dependabot, `upgrade-cargo-deps`), CI-only tweaks, and lint passes collapse into one bullet per kind ("Dependency upkeep: 4 PRs (Snyk npm bumps, cargo patch upgrades)"). ## 4. Write Two parts. **Themes paragraph** (3–6 sentences). Lead with the biggest story of the period, then the next one or two. Name concrete outcomes ("`q2 render` now honors `--no-execute` and `execute:` under `format:`"), not activity ("lots of work on execution"). If there is no real theme, say the period was mostly fixes across areas and name the two or three most notable — don't invent a narrative. End with one sentence of totals: "N PRs merged, M direct commits, K contributors." **Changelog**, grouped under the areas from step 3 (omit empty areas; order areas by how much landed). One bullet per PR: ``` - Short user-facing description of the change. (#1046) ``` - Rewrite titles into plain past-tense or present-tense statements; drop conventional-commit prefixes, braid ids, and branch jargon. - Mention the author only when it's not the user (`gh api user --jq .login`) — e.g. "… (#1031, @someone)". Never `@`-mention bots. - Merge two or three PRs into one bullet when they are clearly one change delivered in pieces: "(#1040, #1041)". - Direct commits that matter get bullets too, with the short hash instead of a PR number; trivial ones (typos, notes) are omitted. - Keep each bullet to one line where possible. ### Slack formatting The user pastes this into Slack's composer, so: - Bold area headings with single asterisks: `*Rendering & formats*`. - Plain `- ` bullets, no nesting. - PR references as bare `#1046`. If the user wants links, switch to full URLs (`https://github.com/quarto-dev/q2/pull/1046`); Slack's composer does not turn `[text](url)` markdown into links reliably. - No `#` headings, no tables. Print the finished message inside a single fenced block (` ```text `) so it copies cleanly, then, outside the block, a short list of judgment calls the user may want to revisit (PRs you weren't sure how to describe, things you grouped or dropped).
View on GitHub