一键导入
stakeholder-update
Generate a weekly / monthly / launch stakeholder update — synthesises PRs, closed issues, AgDRs, and roadmap into a narrative.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Generate a weekly / monthly / launch stakeholder update — synthesises PRs, closed issues, AgDRs, and roadmap into a narrative.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Review a PR for quality, security, and standards compliance. Invokes the Code Reviewer agent (Rex).
Review a technical design / migration AgDR / feature spec for architectural soundness BEFORE the Build phase. Invokes the Solution Architect agent (Tariq) — the non-code analog of /code-review.
Score a review agent (Rex/Hakim/Tariq) against a labeled PR corpus — ground-truth defect-set overlap, never a prose rubric. Headline metric is approve-precision.
Security-focused PR review for vulnerabilities and best practices. Invokes the Security Reviewer agent (Shield).
Record per-PR design-review approval (UI merge gate). ONLY on an explicit per-PR designer "approved".
Record per-PR CEO approval and merge in one turn. ONLY on an explicit per-PR "approved" — never on umbrella "go".
| name | stakeholder-update |
| description | Generate a weekly / monthly / launch stakeholder update — synthesises PRs, closed issues, AgDRs, and roadmap into a narrative. |
| argument-hint | weekly | monthly | launch |
| allowed-tools | Bash, Read, Grep, Glob |
Synthesises recent activity into a stakeholder-facing update. The skill is audience-aware: weekly is dense and tactical for the team, monthly is strategic for leadership, launch is celebratory and metrics-heavy for the broader org or external stakeholders.
Read the registry path via portfolio_registry, the per-project docs dir via portfolio_projects_dir, and the ideas backlog via portfolio_ideas_backlog — all from .claude/hooks/_lib-portfolio-paths.sh. Source the helper at the top of any bash block that touches those paths:
source "$(git rev-parse --show-toplevel)/.claude/hooks/_lib-read-config.sh"
source "$(git rev-parse --show-toplevel)/.claude/hooks/_lib-portfolio-paths.sh"
projects_dir=$(portfolio_projects_dir)
registry=$(portfolio_registry)
Defaults match today's single-fork layout (./apexyard.projects.yaml, ./projects, ./projects/ideas-backlog.md). Adopters in split-portfolio mode override the portfolio.{registry, projects_dir, ideas_backlog} keys in .claude/project-config.json. Don't hardcode literal apexyard.projects.yaml or projects/ paths in bash blocks — the helper resolves whichever mode the adopter is in. See docs/multi-project.md.
Write targets (see me2resh/apexyard#373 + #443): paths documented as projects/<name>/X in this skill are canonical adopter-facing forms — implement them in bash as "${projects_dir}/<name>/X". Never construct from "${PWD}/projects/...", "$(git rev-parse --show-toplevel)/projects/...", or a literal ./projects/... — those break in split-portfolio v2 mode where projects_dir resolves to a sibling repo.
REQUIRED per-block preamble (see #443): Claude executes each bash block as a separate shell invocation. The projects_dir assignment from the Path resolution section above does NOT carry into later blocks. Every bash block that writes to a projects/<name>/X path MUST start with this three-line preamble so it's self-contained:
source "$(git rev-parse --show-toplevel)/.claude/hooks/_lib-read-config.sh"
source "$(git rev-parse --show-toplevel)/.claude/hooks/_lib-portfolio-paths.sh"
projects_dir=$(portfolio_projects_dir)
# ... now write to "${projects_dir}/<name>/X"
The Path resolution section's example sources the helper once for documentation purposes; it does not absolve later blocks from sourcing it themselves. Treat each bash fence as a fresh process.
/stakeholder-update weekly
/stakeholder-update monthly
/stakeholder-update launch
/stakeholder-update weekly --project example-app
Aggregated across every project in apexyard.projects.yaml (the registry at the root of your ops repo), unless --project <name> is passed to scope to one.
The skill pulls from:
| Source | What it gives |
|---|---|
gh pr list --state merged --search "merged:>=<since>" | What shipped |
gh issue list --state closed --search "closed:>=<since>" | What got resolved |
git log --since=<since> --oneline | Commit volume / themes |
docs/agdr/AgDR-*.md (in this period, inside each project) | Decisions made |
projects/<name>/roadmap.md | Strategic direction |
gh pr list --state open | What's in flight |
projects/ideas-backlog.md | Ideas captured |
<since> is computed from the update type:
| Type | Window |
|---|---|
| weekly | 7 days |
| monthly | 30 days |
| launch | last release tag → today (or 90 days if no tag) |
# Weekly Update — {project} — Week of {YYYY-MM-DD}
**Author**: @{git user} · **Period**: last 7 days
## Shipped
- {#PR} — {title} ({PR url})
- ...
## In Flight
- {#PR or #Issue} — {title} — {status}
- ...
## Decisions
- AgDR-{NNNN}: {title}
- ...
## Blockers
- {item} — {what's needed to unblock}
- ...
## Next Week
- {top 3 items from "Now" milestone}
- ...
## Metrics
- PRs merged: {N}
- Issues closed: {N}
- Open PRs: {N}
- Avg. PR review time: {…}
# Monthly Update — {project} — {Month YYYY}
**Author**: @{git user} · **Period**: {start} to {end}
## Highlights
{2–3 sentence narrative summary of the month}
## Roadmap Progress
| Item | Status | Notes |
|------|--------|-------|
| ... | ... | ... |
## Shipped This Month
{Themed list, not commit-by-commit. Group by area.}
### {Area 1}
- {What changed and why it matters}
### {Area 2}
- ...
## Strategic Decisions
{AgDRs from this month, with one-line context for each}
## Quality & Health
- Test coverage: {…}
- CI green rate: {…}
- Open critical issues: {…}
- Open security findings: {…}
## Looking Ahead — Next Month
{Top 3–5 outcomes we're targeting}
## Risks
{1–3 risks worth surfacing to leadership}
# {Project / Feature} — Launch Update
**Date**: {YYYY-MM-DD} · **Owner**: @{git user}
## What launched
{One-paragraph headline. What did users get?}
## Why it matters
{2–3 bullets on user value}
## What's now possible
- {capability 1}
- {capability 2}
- {capability 3}
## By the numbers
- {leading indicator}
- {feature scope: lines / files / endpoints / pages — only if relevant}
- {launch blast radius: % of users, regions, etc.}
## Behind the scenes
{One-paragraph credit reel: who built it, what was hard}
## What's next
{2–3 follow-up items already on the roadmap}
## Try it
{Link / steps to actually use the thing}
$ARGUMENTS (default: weekly)<since> based on type--project if passed, otherwise iterate all projectsprojects/<name>/updates/{type}-{YYYY-MM-DD}.mdWithout --project, generate one section per project, prefixed with the project name and bounded by separators. Add a portfolio summary at the top:
PORTFOLIO ROLLUP — Week of 2026-04-06
3 projects · 12 PRs merged · 18 issues closed · 4 AgDRs
═══════════════════════════════════════
example-app — Weekly
═══════════════════════════════════════
{full weekly update}
═══════════════════════════════════════
billing-api — Weekly
═══════════════════════════════════════
{full weekly update}
═══════════════════════════════════════
marketing-site — Weekly
═══════════════════════════════════════
{full weekly update}
--project flag/status — what's currently in flight/projects — portfolio table/roadmap — what's planned/decide — produces AgDRs that this skill citesPart of ApexYard — multi-project SDLC framework for Claude Code · MIT.