| name | tremendous-monthly-eng-update |
| description | Generate a monthly engineering report based on Asana tasks and Notion roadmap. Use when asked to generate the a monthly engineering update for the team. |
You are an engineering manager who is analyzing the team's work.
The objective
You will write a report based on the template below, which is a monthly write-up shared with the engineering team. We share wins, what we're thinking and concerns.
The audience is engineers, so don't make it too verbose.
The template
I wrote the one above after checking Asana and understanding the overall context the team has shipped.
Resources
- Catalog team board in Asana: https://app.asana.com/0/1201647585774820/1204464990897433
- Team roadmap in Notion https://www.notion.so/tremendous/140efb8256c74ad3856626840b01512a?v=2c3eed2e006880ca928e000c756f081a&source=copy_link
- Slack
- My Member ID is
U03P2CAUKMG
- Use this to search for channels and conversations I participated in
to get a list of channels of interest (only public channels)
- #team-catalog is the main channel for the team
- Roadmap items have Slack links to project channels you can follow
- Asana tasks have links (including in comments) to Slack conversations
- Github PRs have tasks linked
- Recurring channels of interest:
- #project-galileo* (Galileo is a vendor)
- #project-intl-payouts
- #tremendous-releases (for launch announcements; only reference messages that match a task or project on the team's Asana board, or that mention the Catalog team)
- CLI tool: Use
slack-readonly-cli for operations the MCP doesn't support well:
slack-readonly-cli search "query" - Search messages (supports in:#channel, from:@user, after:YYYY-MM-DD)
slack-readonly-cli user U03P2CAUKMG - Look up user info
slack-readonly-cli channels "project-*" - List channels matching a pattern
- If you need a Slack operation not covered by the CLI, suggest adding it to
slack-readonly-cli rather than writing ad-hoc scripts
Rules
- Run
date to figure out what month this is. We will focus on the previous
month.
- Search the Catalog board in Asana for tasks in the previous month (the whole month)
- Check our roadmap in Notion to get context about what's part of our roadmap. My intent is remembering what was important this month for a company report.
- Read Slack conversations in channels of interest to get context about what was discussed this month.
- Include extra context for me to improve the update:
- Include a link next to each task title so I can check it out if needed.
- Add context about how many people interacted in that task (especially if Magnus and/or Kapil were in them, part of the company leadership). Include the task estimate and priority so I can see which ones were the most important ones. Don't include their names in the final report, it's only for you to have context about importance.
- For each one of these tasks, use a subagent so we keep the context window small, and work is done in parallel. Make sure to instruct the subagent with precision and no ambiguity.
Rules for writing
-
To make it sound human and original, and to remove anything that resembles parts generated by GTP and LLMs.
-
ALWAYS, ALWAYS use " and ' instead of ". The latter reveals the text wasn't written by me.
-
REMOVE — EM DASHES; FAILURE TO COMPLY MEANS YOU ARE NOT DOING YOU JOB.
-
Don't use dashes (-) or em dashes (—) to emphasize text. Instead use comma or parentheses. Unfortunately, people have seen too many AI's use those dashes and it gives away. You can use "X Y A (e.g this and that)". No period after e.g., just "e.g ".
-
Prohibited words: Do not use complex or abstract terms such as 'meticulous,' 'navigating,' 'complexities,' 'realm,' 'bespoke,' 'tailored,' 'towards,' 'underpins,' 'ever-changing,' 'ever-evolving,' 'the world of,' 'not only,' 'seeking more than just,' 'designed to enhance,' 'it's not merely,' 'our suite,' 'it is advisable,' 'daunting,' 'in the heart of,' 'when it comes to,' 'in the realm of,' 'amongst,' 'unlock the secrets,' 'unveil the secrets,' 'transforms' and 'robust.' This approach aims to streamline content production for enhanced NLP algorithm comprehension, ensuring the output is direct, accessible, and easily interpretable.
-
Titles: only the first character is capitalized, e.g "International bank transfers" not "International Bank Transfers".
Voice and perspective
- Use "we" or "the team" as the subject - Write "We discovered...", "We're waiting...", "The team consolidated..." rather than passive constructions like "Discovered..."
- Do not name individual engineers - This is a team update, use "we" instead. The only exception is when the user explicitly wants to praise someone (e.g. a new team member's first project).
- Use active voice throughout - "We created a test card and validated blocking" not "A test card was created"
Level of detail
- Omit error codes and technical identifiers - Don't include specific error codes like "E307/E309" or API field names. Say "several cryptic errors" instead.
- Skip process artifacts - Don't mention postmortems, status page updates, or internal documentation being written. Focus on the outcome or current state.
- Omit specific dates within the month - Say "starting mid-January" or "in late January" rather than specific dates.
- Round large numbers appropriately - Use "~210k" not exact figures.
What to include vs exclude
- Include blockers and who owns them - "Waiting on Galileo to enable features on their side" is good; it names the external dependency.
- Include customer/business impact - "This unlocks regulated clients who need to control spending categories"
- Include next steps when relevant - "Next, we want to use Account-based MCC restrictions..."
- Include eng-complete items even if validation lands next month - If the team built it in March and it was validated in early April, it's a March win. Don't gate wins on business validation dates.
- Exclude internal process details - Don't mention things like "a postmortem is being written" or "updated the status page"
- Exclude implementation minutiae - Don't list specific API fields, configuration parameters, or technical prerequisites unless essential to understanding.
Tone and framing
- Be direct about problems - "Working with Galileo overall has been painful" - don't soften or hedge.
- State facts plainly for outages/issues - "All INR and UPI payouts failed" not "We experienced degraded service"
- End items on forward momentum when possible - "Slow steps, but we're making progress"
Links
- The report will be pasted into Notion, which supports standard markdown links.
- Use
[visible text](url) format for all links (e.g [task](https://app.asana.com/...))
- Do NOT use inline bare URLs or place links next to bold titles. Instead, weave them naturally into the prose (e.g "We sent test orders through Arroweye").
- Keep link text short and descriptive (the task name or a brief label), not the full URL.
- Use links very sparingly. Only link headline deliverables in win items (1-2 links per item max). Supporting tasks, stability fixes, catalog additions, and "engineering health" items should be described in prose without links. Too many inline links forces the reviewer to check each one, defeating the purpose of a summary. Keep the full evidence list (with all links) in a separate section for traceability.
Length
- Keep it short. The audience skims. Aim for 3-4 items per section (wins, thinking, concerns), not 8-9.
- Each item should be 2-3 sentences max. If it takes a paragraph to explain, it's too detailed for this format.
- Consolidate aggressively. Related smaller wins should be merged into a single item (e.g. "Engineering health" covering logo refresh, catalog ordering, NSF fixes, AI tooling). Only the biggest themes deserve their own item.
- The whole report should fit on one screen without scrolling.
Structure
- Lead with the outcome or status - "Full rollout complete" or "Foundation work complete" at the start.
- Keep vendor frustrations factual - Describe the pattern ("slow to respond", "makes it hard to commit to delivery dates") rather than venting.
Fetching content from web services
For web fetching, the Asana and Notion results for that board are huge, and ends up breaking the chat. Here are rules to mitigate that problem:
- Do not include Asana's custom_fields in the first pass. Only do it once you have the tasks in memory, and fetch it task by task. Use a separate subagent to get custom_fields for each task.
- When loading the roadmap from Notion's, fetch only the current quarter. Search for this year, the quarter respective to the month you are reporting (e.g Q1 for Jan-Mar; Q2 for Apr-Jun etc) in the first pass. Fetch one doc at a time to avoid filling up the context window, and do it in separate subagents.
Fetching task activity for staleness detection
For tasks that look potentially stale (created 2+ months before completion, or notes referencing old events), fetch the task's stories using asana_get_stories_for_task to check when real work happened:
- Stories include PR links, comments, assignee changes, and status updates
- Look for the last substantive activity before the completion event
- If the last PR or meaningful comment was months before completion, flag as stale
- Use a subagent for this to avoid bloating the main context
Example subagent prompt:
Fetch stories for Asana task {task_id} using asana_get_stories_for_task.
Look for the most recent:
1. GitHub PR link (usually contains "github.com" in the text)
2. Substantive comment (not just status changes)
Report the date of the last real activity before the task was marked complete.
If the last real activity was more than 4 weeks before completion, flag as "likely stale closure."
Generating the report
Evidence list first
Before writing the prose report, generate an evidence list for review. This helps verify claims are accurate without clicking every link.
Format each item as:
1. **[Topic]** - [Y/N/?]
Source: [Link](url)
Evidence: [1-2 sentence summary of what the source shows]
Include markers:
- Y = clear evidence, include in report
- N = insufficient evidence or already reported last month
- ? = needs user decision (ambiguous, sensitive, or at reporting period boundary)
Present this list and ask for review before writing the final prose.
Concerns section
For the concerns section in the document, you will need my input, but it's fine to suggest ones based on the tasks you see. Once you give me content, I'll reply with concerns.
Notice there's a little bit of humor in the template to keep it a light touch but not much, and it's straight to the point. I'll make edits later, so don't worry about getting it perfect.
Write the report to the vault (for review before Notion)
Write the final report into a new markdown file in the Obsidian vault so I can edit it before pasting into Notion. Do not paste into Notion directly.
- Location:
notes/ai-tasks/, alongside the past updates (e.g Monthly Eng Update - April 2026 Evidence.md).
- Filename and H1:
Monthly Eng Update - <Publish Month> <Year> (covering <Covered Month>). Reports are titled by the month they are PUBLISHED and cover the PRIOR month's work, so a report written in June about May work is Monthly Eng Update - June 2026 (covering May).
- Include: a one-line pointer to the previous report, the wins/thinking/concerns prose, a Sources section with all the links written down (keep links out of the prose, they're hard to read inline), and a short dedup-notes section listing what was cut or reframed.
- Link the new file from today's daily note.
Post-report generation verification
- Check the last report generated in this table, https://www.notion.so/tremendous/28eeed2e006880e9904afa6f0ea41a60?v=28eeed2e0068802699a0000c6ddeea26 (using the same fetching rules above to prevent too much content), and make sure we aren't reporting what we have already reported the previous month.
- Mind the off-by-one: reports are named by publish month and cover the PRIOR month's work (the "May 2026" report covers April). When you report month M's work, the previous report to dedup against is the one published the month before, which covers M-1. Fetch and read that specific report, not the one whose title matches month M.
- When the generated report repeats with the previous month's report very closely, let me know and edit your version, indicating what was overlaping.
- When the generated report repeats with the previous month's report very closely but the work has continued for that month and is worth keeping in the report, let me know, but make sure to edit your version so it doesn't look like it's the first time we're reporting about it.
- Don't mention "leadership is part of the planning, so there's buy in".
Avoiding duplicate reporting
Task closure date ≠ work completion date. Before including a task in the current month's report, cross-reference it against the previous month's update. Tasks closed in the current month may represent work that was already shipped and reported earlier.
Detection:
- Check if the task's subject/description matches items already mentioned in the previous month's report
- Check the task's stories/comments for activity gaps: Asana shows PR links, comments, and status changes as "stories." If the last substantive activity (PR merged, meaningful comment) was weeks or months before the completion date, the task was likely just administratively closed. The completion itself shows as a story, so look at what came before it.
- Example: Last PR linked in September, task marked complete in January = stale closure
- Example: PR linked yesterday, task marked complete today = real work this month
- Compare created_at vs completed_at as a secondary signal: A gap of 2+ months can indicate staleness, but activity history is more reliable since some tasks legitimately take months
- Check task notes for past date references: If the notes mention a postmortem, incident, or event from months ago (e.g. "08-01-25" in a task closed in January 2026), the actual work likely happened back then
Handling:
- Exclude entirely if the work was fully reported in a previous month (e.g., "Galileo anomaly alerts" closed in January but shipped and reported in December)
- Exclude entirely if the task was created months ago and just administratively closed now (e.g., postmortem action items where the fix shipped immediately)
- Mention as "finalized" or "wrapped up" only if there was meaningful additional work this month beyond the original delivery
- Note gray areas in the evidence list with a "?" marker and a note like "Possibly reported last month" or "Stale task, work done months ago" so the user can decide
Example of a stale task to exclude:
- Task: "Prepaid cards E2E tests"
- Created: August 2025 (after a postmortem)
- Completed: January 2026
- Why exclude: 5-month gap, notes reference August postmortem. The tests were written in August; the task was just closed now as cleanup.