{"slug": "claude-prompt-for-work-log-md", "title": "Claude Prompt for Work Log.md", "summary": "A developer created a detailed specification for a Work Log generator that automatically compiles engineering work from GitHub, Linear, and Notion into a structured document with themes, monthly timelines, and project planning sections. The tool supports both update and regenerate modes, integrating new data since the last generation date.", "body_md": "| # Generate / Update a Work Log | |\n| You are generating (or updating) a **Work Log** — an evergreen summary of one person's | |\n| engineering work, sourced from GitHub pull requests, Linear tickets, and Notion docs. | |\n| It is both **thematic** (high-level themes) and **chronological** (a month-by-month | |\n| timeline). Follow this spec. | |\n| ## Configuration | |\n| Fill these in before running: | |\n| - `GITHUB_USER` — the PR author to query on GitHub. | |\n| - `REPOS` — the list of repositories to sweep (owner/name), plus any repo that should be | |\n| scope-limited (e.g. \"only items relevant to project X\"). | |\n| - `LINEAR_TEAM` — the Linear team key to pull projects/tickets from. | |\n| - `LINEAR_USER` — the Linear user whose authored/assigned issues to include. | |\n| - `NOTION_PAGE` — the destination Work Log page id/URL (omit for a fresh page). | |\n| - `NOTION_USER` — the Notion user id whose authored docs to fold in. | |\n| - `NOTION_SPACE` — the workspace/teamspace to scope the doc search to. | |\n| - `START_DATE` — the date the work history begins. | |\n| Use whatever tools are available for each source — a connected MCP server, an official | |\n| CLI, or the REST API. The commands below are illustrative, not required. | |\n| - **GitHub:** query **merged and open** PRs by `GITHUB_USER` across `REPOS`. Skip | |\n| closed/unmerged PRs unless notably exploratory (mark those `*(closed/exploratory)*`). | |\n| For example, with the `gh` CLI: | |\n| `gh search prs --author GITHUB_USER --repo <repo> --sort created --limit 100 --json number,title,url,state,createdAt,mergedAt,closedAt` | |\n| - **Linear:** pull projects and tickets from `LINEAR_TEAM` that `LINEAR_USER` authored, | |\n| was assigned, or assembled (e.g. list-projects / list-issues operations). Capture id, | |\n| title, status, and blocking relationships. | |\n| - **Notion:** fold in docs authored by `NOTION_USER` in `NOTION_SPACE` (e.g. search / | |\n| fetch operations). If `NOTION_PAGE` is set, that is the page to update. | |\n| ## Mode | |\n| - **Update (default):** fetch the current page, read the `Last Generated` footer date, and | |\n| integrate everything new **since that date** into the existing structure. Do NOT append a | |\n| dated changelog block — weave items into the matching thematic/monthly sub-sections and | |\n| preserve hand-written prose. | |\n| - **Regenerate:** a clean rebuild from scratch following the structure below. | |\n| ## Output structure | |\n| 1. **Intro** — one-line summary of scope (repos + work since `START_DATE`), a `PR counts:` | |\n| line with per-repo counts, and any static bio block (resume, education, languages, | |\n| talks) carried forward unchanged. | |\n| 2. **## Themes** — 5–7 bullets, each a bolded theme name + em-dash + one-sentence summary. | |\n| Derive themes from the actual PR/ticket clusters, not a fixed list. | |\n| 3. **## Monthly Timeline** — newest month first, grouped by repository within each month. | |\n| - `## <Month Year>` heading, with a one-line italic summary of that month's highlights. | |\n| - `### <Repo>` sub-headings under each month. | |\n| - Each PR is a bullet: `- [#NNN](url) — <concise, outcome-focused title> (TICKET-ID)`. | |\n| Include the tracker ticket id in parens when the PR references one. For repos other | |\n| than the primary one, use `[repo #NNN](url)` link text. | |\n| - Mark open PRs `*(in review)*`. Group closely related PRs on one bullet with comma- | |\n| separated links when they form one logical unit. | |\n| 4. **## Project planning (Linear)** — a short intro of any project assembled/led, then | |\n| `### Tickets` (each `- [TICKET-ID](url) — title *(status/notes)*`) and a `### Supporting` | |\n| list (labels created, planning artifacts, etc.). | |\n| 5. **## Notion** — internal docs authored, grouped into logical sub-sections (e.g. Guides & | |\n| Operations, Benchmarks, Reference/API Docs, Notes & Essays). Each is | |\n| `- [Title](url) — short description`. | |\n| 6. **Footer** (italic): `*Last Generated YYYY-MM-DD from GitHub PRs (author: GITHUB_USER) | |\n| and Notion. Organized by month.*` — set the date to today. | |\n| ## Style rules | |\n| - Titles are outcome-focused and concise — describe what the change accomplishes, not the | |\n| raw PR title. Keep a professional, terse voice. | |\n| - Use em dashes (—) between a link and its description. | |\n| - Don't invent PRs, tickets, or docs — only include what the sources return. If a source is | |\n| unreachable, note the gap rather than guessing. | |\n| - Sort months newest-first; within a repo section, roughly newest-first by created date. | |\n| - Preserve horizontal rules (`---`) between major sections. | |\n| ## Steps | |\n| 1. Fetch the current page (if updating) and note the last-generated date and structure. | |\n| 2. In parallel, sweep GitHub (all repos), Linear (the team), and Notion (docs since the | |\n| last date). | |\n| 3. Reconcile: for update mode, diff against what's already on the page; for regenerate, | |\n| build fresh. | |\n| 4. Draft the markdown, recompute per-repo PR counts, refresh themes if the balance of work | |\n| shifted, and bump the footer date. | |\n| 5. Write it back to the destination page — or output the markdown for review first if asked. |", "url": "https://wpnews.pro/news/claude-prompt-for-work-log-md", "canonical_source": "https://gist.github.com/justinrmiller/a2b2ef48afbedf742d4fd91fa3c46ba4", "published_at": "2026-07-09 06:38:17+00:00", "updated_at": "2026-07-09 20:05:17.952806+00:00", "lang": "en", "topics": ["developer-tools"], "entities": ["GitHub", "Linear", "Notion"], "alternates": {"html": "https://wpnews.pro/news/claude-prompt-for-work-log-md", "markdown": "https://wpnews.pro/news/claude-prompt-for-work-log-md.md", "text": "https://wpnews.pro/news/claude-prompt-for-work-log-md.txt", "jsonld": "https://wpnews.pro/news/claude-prompt-for-work-log-md.jsonld"}}