From nanopm
Drafts a weekly stakeholder update email based on git activity and project context, adapting tone to manager, exec, investors, dev team, or cross-functional audience.
How this skill is triggered — by the user, by Claude, or both
Slash command
/nanopm:pm-weekly-updateThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
<!-- portability-v2 -->
Multi-host portability rules. When invoking
AskUserQuestion:
- The
headerfield MUST be a short noun phrase (≤ 12 characters). Mistral Vibe rejects longer headers withstring_too_long. Pick from:Start,Target,Scope,Audience,Methodology,Feature,Question.- The
optionslist MUST have at least 2 items. Vibe rejects empty/single-option calls. For free-text input, always provide ≥ 2 framing options (e.g.Yes, here's the input/Skip) — never callask_user_questionwithoptions: [].
source ~/.nanopm/lib/nanopm.sh 2>/dev/null || \
source .nanopm/lib/nanopm.sh 2>/dev/null || \
{ echo "ERROR: nanopm not installed. Run: curl -fsSL https://raw.githubusercontent.com/nmrtn/nanopm/main/setup | bash"; exit 1; }
nanopm_preamble
_UPDATE_FILE=".nanopm/WEEKLY_UPDATE.md"
Run /pm-weekly-update at the end of your work week to:
source ~/.nanopm/lib/nanopm.sh 2>/dev/null || source .nanopm/lib/nanopm.sh 2>/dev/null || true
nanopm_context_read pm-weekly-update
nanopm_context_all
Check for previous weekly updates to maintain continuity of tone and ongoing commitments:
ls .nanopm/weekly-updates/ 2>/dev/null | sort | tail -3 || echo "NO_PRIOR_UPDATES"
Ask via AskUserQuestion — ONE question:
"Who is this update for?
A) My manager / skip-level B) CEO or executive team C) Investors / board D) My dev team E) Cross-functional stakeholders (design, marketing, ops)
You can also just describe them in one line."
Each audience gets a different tone and level of detail:
Git activity (last 7 days):
git log --since="7 days ago" --oneline --no-merges 2>/dev/null | head -20 || echo "NO_GIT"
Linear (if available):
source ~/.nanopm/lib/nanopm.sh 2>/dev/null || source .nanopm/lib/nanopm.sh 2>/dev/null || true
_TIER_LINEAR=$(nanopm_has_connector linear)
echo "LINEAR_TIER: $_TIER_LINEAR"
If LINEAR available:
Roadmap and objectives:
[ -f ".nanopm/ROADMAP.md" ] && cat .nanopm/ROADMAP.md || echo "NO_ROADMAP"
[ -f ".nanopm/OBJECTIVES.md" ] && cat .nanopm/OBJECTIVES.md || echo "NO_OBJECTIVES"
_CHALLENGES=".nanopm/CHALLENGES.md"; [ -f "$_CHALLENGES" ] || _CHALLENGES=".nanopm/AUDIT.md" # legacy pre-rename name
[ -f "$_CHALLENGES" ] && head -40 "$_CHALLENGES" || echo "NO_CHALLENGES"
Define context (tailor the update):
[ -f ".nanopm/ORG.md" ] && echo "ORG_EXISTS" || echo "ORG_MISSING"
[ -f ".nanopm/BUSINESS-MODEL.md" ] && echo "BUSINESS_MODEL_EXISTS" || echo "BUSINESS_MODEL_MISSING"
If ORG_EXISTS: read .nanopm/ORG.md. Use the org map and decision-makers to tailor the update to the stakeholders — match tone and detail to who the audience (from Phase 1) actually is, and flag decisions to the named decision-maker who owns them.
If BUSINESS_MODEL_EXISTS: read .nanopm/BUSINESS-MODEL.md. Frame metrics commercially — translate shipped work and traction into the language of the business model (revenue, the core GTM motion, the metrics that matter), especially for the investor/exec audiences. Both reads are advisory — if a doc is absent, proceed without it.
Prior week's commitments: If a previous update exists, extract any "next week I will..." commitments and check which were honored.
Before drafting, make an honest assessment:
Status: 🟢 On track | 🟡 At risk | 🔴 Blocked / behind
What shipped: (list, not spin)
What slipped and why: (be direct — one sentence per item)
Strategic signal: Did anything change this week that affects direction?
Commitments honored/missed from last week: (if prior update exists)
Write the update adapted to the audience from Phase 1.
Template — Manager / exec:
Subject: PM Update — Week of {date}
Status: {🟢 On track | 🟡 At risk | 🔴 Behind}
SHIPPED
- {item} — {one-line impact}
- {item}
SLIPPED
- {item} — {reason, one sentence}
NEXT WEEK
- {commitment 1}
- {commitment 2}
NEEDS YOUR INPUT
- {decision or unblock needed, if any — otherwise omit this section}
STRATEGIC NOTE
{One paragraph max. Only if something changed worth flagging — new signal, risk, pivot consideration. Omit if nothing material changed.}
Template — Investors / board:
Subject: Weekly Signal — {project} — {date}
ONE LINE: {what moved this week in one sentence}
MOMENTUM
- {shipped item with measurable impact if available}
- {traction signal: usage, signups, conversations, revenue}
RISKS
- {honest risk, one line}
NEXT MILESTONE
{what you're working toward and when}
Template — Dev team:
## Week of {date}
**Shipped:** {list}
**In progress:** {list}
**Blocked:** {list — include who can unblock}
**Next week's focus:** {top priority}
**Decisions made:** {any product decisions that affect implementation}
Rules for all audiences:
Write to .nanopm/WEEKLY_UPDATE.md (latest draft — overwrite).
Also append to weekly history:
mkdir -p .nanopm/weekly-updates
cp .nanopm/WEEKLY_UPDATE.md ".nanopm/weekly-updates/$(date +%Y-%m-%d).md" 2>/dev/null || true
source ~/.nanopm/lib/nanopm.sh 2>/dev/null || source .nanopm/lib/nanopm.sh 2>/dev/null || true
nanopm_context_append "{\"skill\":\"pm-weekly-update\",\"outputs\":{\"date\":\"$(date +%Y-%m-%d)\",\"audience\":\"stakeholders\",\"status\":\"drafted\"}}"
Tell the user:
.nanopm/WEEKLY_UPDATE.mdSTATUS: DONE
npx claudepluginhub nmrtn/nanopm --plugin nanopmUse this skill when the user asks to "write my weekly update", "weekly PM digest", "weekly report", "write my status update", "end of week summary", "weekly standup summary", "write the PM weekly", "update the team this week", or needs to produce a regular cadence update covering what shipped, what's in progress, and what's next.
Generates structured stakeholder updates with TL;DR headlines, progress trends, risks, and clear asks for status reports and executive summaries.
Generates stakeholder updates tailored to audience (executives, engineering, customers) and cadence (weekly/monthly status, launch announcements, risk escalations). Pulls from connected tools.