.claude/skills/weekly-report/SKILL.md
Generate a weekly work report from local task files in a standard format. Trigger when Dizi says "weekly report", "generate weekly report", "weekly recap", or "what did I do this week".
npx skillsauth add diziassyafadi/Manager weekly-reportInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Generate a weekly report markdown file in report/ from task files and Google Calendar, then publish it as a formatted Google Doc.
Argument: $ARGUMENTS
YYYY-MM-DD → use the email whose week range contains that dateYYYY-MM-DD YYYY-MM-DD → explicit start and end date range (skip Gmail lookup)If no explicit date range was given, find the week range via Gmail:
Call mcp__workspace-mcp__search_gmail_messages:
user_google_email: [email protected]query: subject:"Fill Weekly Report:" in:inboxpage_size: 5Select the most recent result (or the one whose subject date range contains the argument date).
Call mcp__workspace-mcp__get_gmail_message_content with that message ID to read the email body.
Extract the date range from the subject line (e.g., "22 March 2026 - 28 March 2026").
Parse → WEEK_START (YYYY-MM-DD) and WEEK_END (YYYY-MM-DD).
If no email is found and no argument date range was given, stop and ask Dizi for the date range.
Print: Generating report for: WEEK_START → WEEK_END
Read all *.md files in tasks/ (skip README.md). For each file parse:
title, status, created, completed, due, issue# Current Issue / BlockerCategorize into buckets:
| Bucket | Criteria |
|--------|----------|
| Accomplishments (Done) | status: done AND completed is within WEEK_START–WEEK_END |
| Accomplishments (In Progress) | status: in-progress or in-review |
| Next Actions | status: ready, in-progress, or in-review |
| Issues | # Current Issue / Blocker is NOT N/A, AND task is in Accomplishments or has created within the week range |
Call mcp__workspace-mcp__get_events:
user_google_email: [email protected]time_min: <WEEK_START>T00:00:00+07:00time_max: <WEEK_END>T23:59:59+07:00max_results: 50Filter: keep only events that represent meetings, standups, training, conferences, or notable external events. Exclude personal block-time or recurring placeholder events (e.g., "Busy", "Focus Time", "Lunch Time").
Format each kept event as: <Event Name> (<Day, DD MMM YYYY>)
Ask Dizi the following in a single message before proceeding:
Before I generate the report, I need a few optional inputs:
1. Key Metrics — provide a value for each or leave as "-":
• Individual average response time (e.g., 0.3)
• Team average response time (e.g., 0.7)
2. Out of Office — any OOO during WEEK_START – WEEK_END?
If yes, provide the date range (e.g., "March 25–26").
If no, say "none".
3. Articles for "Technology, Business, Communication, Leadership, Management & Marketing" section?
If yes, provide one per line as: Headline | https://article-url
If no, say "none".
Wait for Dizi's reply before proceeding to step 5.
Write the report to report/<WEEK_START>_<WEEK_END>.md using the template below.
For each section:
(please insert here) as the content so Dizi can fill it manually.# [Weekly Report: Raden Dizi Assyafadi Putra] <DD Month YYYY> - <DD Month YYYY>
## Issues
<issues_content OR (please insert here)>
## Accomplishments
<accomplishments_content OR (please insert here)>
## Meetings/Events/Training/Conferences
<meetings_content OR (please insert here)>
## Key Metrics / OMTM
<metrics_content OR (please insert here)>
## Next Actions
<next_actions_content OR (please insert here)>
## Technology, Business, Communication, Leadership, Management & Marketing
<articles_content OR (please insert here)>
## Out of Office
<ooo_content OR (please insert here)>
Section content formats:
Issues (if blockers exist):
- <Task Title> — <first non-empty line of blocker section>
Accomplishments:
Done:
- <Task Title> — https://github.com/gdp-admin/SRE-task/issues/<issue>
In Progress / In Review:
- <Task Title> — https://github.com/gdp-admin/SRE-task/issues/<issue>
Omit the GitHub link if issue is null. Omit a sub-section header if it has no entries.
Meetings/Events/Training/Conferences:
- <Event Name> (<Day, DD MMM YYYY>)
Key Metrics / OMTM:
Ticket response time in a week within 0.5 hour.
- Average individual response time: <individual_time> / 0.5 hour
- Average team response time: <team_time> / 0.8 hour.
Use - for any value Dizi did not provide.
Next Actions:
- <Task Title> (Status: <status>, Due: <due or "not set">)
Technology, Business, Communication, Leadership, Management & Marketing:
- <Headline> — <URL>
Out of Office: date range string (e.g., March 25–26, 2026).
Call mcp__workspace-mcp__import_to_google_doc:
user_google_email: [email protected]file_name: Weekly Report Dizi — <WEEK_START> to <WEEK_END>content: the full markdown string written in step 5source_format: mdThis converts the markdown to a formatted Google Doc (headings, bullets, bold preserved).
Report generated → report/<WEEK_START>_<WEEK_END>.md
Google Doc → <link returned by import_to_google_doc>
Week: WEEK_START → WEEK_END
Sections filled: <list sections that were written>
Sections skipped (no data): <list sections left as placeholder>
documentation
Sync a local task file to GitHub Issues in gdp-admin/SRE-task. Creates if issue is null, updates if set. Supports comments and PR attachment. Trigger on "push issue", "update issue", "sync issue", "create issue".
development
Create a new task file in `tasks/` by collecting information from Dizi interactively. Trigger when Dizi says "new task", "create task", "add task", or wants to log a piece of work.
tools
Imports a GitHub Issue into a local task file in tasks/. Triggers when Dizi says "import issue", "pull issue from GitHub", "create local task from issue", provides a GitHub issue number, URL, or assignee username.
development
Maintainer-only workflow for handling GitHub Secret Scanning alerts on OpenClaw. Use when Codex needs to triage, redact, clean up, and resolve secret leakage found in issue comments, issue bodies, PR comments, or other GitHub content.