Bitwarden Retrospective Tools
Skill 47 of 83
Generates an interactive HTML recap of the user’s own engineering work over one Monday-to-Friday workweek, ready for a weekly standup, 1:1 prep, or sharing with colleagues.
3 minutes · 626 words · 4 sections
Install
npx skills add bitwarden/ai-plugins --skill weekly-recapnpx skills add bitwarden/ai-plugins/plugin marketplace add bitwarden/ai-pluginsThe first command installs just this skill, by the name in its SKILL.md; the second installs the whole repository.
Generate the daily-recap page for a whole workweek. This skill defines only what differs for a week. Everything else comes from the daily-recap skill in the same plugin.
Read ${CLAUDE_PLUGIN_ROOT}/skills/daily-recap/SKILL.md and follow its workflow (steps 1-7), its references/render-guide.md, and its rules on escaping, credentials, untrusted text, the Content-Security-Policy, and deleting work/. Where this file says something different, this file wins.
That file is read as plain text, so two things in it need translating:
scripts/, assets/, references/) are under ${CLAUDE_PLUGIN_ROOT}/skills/daily-recap/. Call the scripts by that absolute path.${CLAUDE_PLUGIN_DATA} stays literal, because that file is read as plain text rather than loaded as a skill. Use the path substituted into this file: out_dir="${DAILY_RECAP_OUTPUT_DIR:-${CLAUDE_PLUGIN_DATA}/daily-recaps}". If the result still contains ${ or begins with /daily-recaps, the plugin data variable was empty; stop and report that this skill must run from the installed plugin.A week is the five workdays Monday through Friday. Each workday uses daily-recap’s day boundary (DAILY_RECAP_CUTOFF_HOUR, default 07:00, and TZ), so the week runs from the cutoff on Monday to the cutoff on Saturday. Pick the dates, then take the actual bounds from the scripts’ window output rather than recomputing them.
To step between dates, source ${CLAUDE_PLUGIN_ROOT}/skills/daily-recap/scripts/date-utils.sh and use add_days, which handles GNU and BSD date. For a date’s weekday, use epoch_fmt "$(local_to_epoch "YYYY-MM-DD 12:00:00")" '%u' (1=Monday) rather than date -d, which is GNU-only and silently returns today’s weekday on BSD date.
In daily-recap’s step 1, run (a), (b), and (d) once per workday in the week, passing that day’s date and naming each file by it (events-YYYY-MM-DD.json, sessions-YYYY-MM-DD.json, atlassian-YYYY-MM-DD.json). In (b), read the window bounds from that day’s events-YYYY-MM-DD.json rather than the events.json the step names. Run (c) once for the whole week: gather-gh-search.sh MONDAY LAST-DAY, where LAST-DAY is Friday, or for “this week” the earlier of today and that week’s Friday. Skip (e) and leave {{TODAY_BANNER}} empty: “this week” already covers today, and for a past week the banner would sit across a weekend gap.
GitHub’s events feed holds only the last 300 events from the last 30 days, so a busy week can be truncated, and a week more than 30 days old has no events at all. When any day’s feed_complete is false, say so in the recap and rely on search.json for PRs.
Merge the per-day session digests before step 4, and the remaining per-day results before step 5. A session or PR that spans several days is one item, and a stream can run across the whole week.
recap-week-YYYY-MM-DD.html in $out_dir, named by Monday’s date. Use this name in steps 6 and 7.<title>, the “Engineering Daily Recap” header span, the “Daily Recap · Interactive” eyebrow, and the “Bitwarden · Engineering Daily Recap” footer. All four sit outside the <script> block, so the Content-Security-Policy hash is unaffected.{{DATE}}: the range, for example 2026-10-19 – 2026-10-23.{{STANDUP_PERIOD}}: Week · {range}.{{STANDUP_LABEL_PAST}} is Last week and {{STANDUP_LABEL_NEXT}} is This week, per the render guide’s Weekly column.{Weekday} · {YYYY-MM-DD}. Each event’s tl-time span reads {Ddd} {HH:MM} rather than {HH:MM}, so the day stays legible when the project or search filter hides the events under a divider. Leave out the After Midnight divider; post-midnight events stay under their workday.Generates an interactive HTML recap of the user's own engineering work over one Monday-to-Friday workweek, ready for a weekly standup, 1:1 prep, or sharing with colleagues. Use when the user asks what they worked on, shipped, merged, reviewed, or moved tickets and docs on over a week ("this week", "last week", "the week of" a date), or asks for a "weekly recap", "weekly standup", "weekly summary", "week in review", or "weekly update", including phrasings like "throw together what I did last week". Not for a single day or part of a day, for a multi-day range that is not a Monday-to-Friday week or for several weeks at once (use the daily-recap skill), for looking up a single specific PR, commit, ticket, or document, for someone else's activity, for meeting recaps, for repository-level overviews, or for critiquing how a single Claude Code session went.
The verbatim description from this skill’s front matter — the string an agent matches on to decide whether to load it.
main, last pushed 6 November 2026.SKILL.md, not by matching a directory convention. 20 distinct layouts observed: plugins/bitwarden-abacus-tools/skills/*/SKILL.md, plugins/bitwarden-adr-tools/skills/*/SKILL.md, plugins/bitwarden-atlassian-tools/skills/*/SKILL.md, plugins/bitwarden-code-review/skills/*/SKILL.md, plugins/bitwarden-delivery-tools/skills/*/SKILL.md, plugins/bitwarden-design-tools/skills/*/SKILL.md, plugins/bitwarden-designer/skills/*/SKILL.md, plugins/bitwarden-devops-engineer/skills/*/SKILL.md, plugins/bitwarden-doc-parity/skills/*/SKILL.md, plugins/bitwarden-mailcatcher-tools/skills/*/SKILL.md, plugins/bitwarden-product-analyst/skills/*/SKILL.md, plugins/bitwarden-retrospective-tools/skills/*/SKILL.md, plugins/bitwarden-security-engineer/skills/*/SKILL.md, plugins/bitwarden-shepherd/skills/*/SKILL.md, plugins/bitwarden-stripe-tools/skills/*/SKILL.md, plugins/bitwarden-tech-lead/skills/*/SKILL.md, plugins/bitwarden-testing-tools/skills/*/SKILL.md, plugins/bitwarden-testmo-tools/skills/*/SKILL.md, plugins/claude-config-validator/skills/*/SKILL.md, plugins/claude-retrospective/skills/*/SKILL.md.h1 and no skipped levels:.claude-plugin/marketplace.json by Bitwarden, declaring 23 plugins. It is read for editorial metadata only — never as the skill index, which is always the repository tree./bitwarden/ai-plugins.md, and each skill at its own .md URL.1 file · 1 KB
Everything this skill ships beside its prose. All of it is set here, as a subchapter of skill 47.
Everything else published alongside the skill.