WCAG 2.1 AA audit — perceivable, operable, understandable, robust criteria. Deep-dive for /launch-check accessibility.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Generate a weekly / monthly / launch stakeholder update — synthesises PRs, closed issues, AgDRs, and roadmap into a narrative.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
실행 점수 미검증
설치 방법 보기설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.
Read .claude/rules/writing-standard.md. Use the controlled technical writing profile for the
stakeholder update: open with the outcome, impact, and next action.
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"
source "$(git rev-parse --show-toplevel)/.claude/hooks/_lib-tracker.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 | Axis |
|---|---|---|
gh pr list --state merged --search "merged:>=<since>" | What shipped | forge (#711) |
tracker_list "$repo" state=closed since=<since> | What got resolved | issue ✓ |
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 | forge (#711) |
projects/ideas-backlog.md | Ideas captured | — |
The tracker_list row passes no limit, so it takes the configured default
(tracker.list_default_limit, 30). A busy period closes more than 30 issues, and the read is then
a short one. Call it through tracker_list_to and read the verdict, as /inbox does: on
TRUNCATED, raise the limit or say the list is partial. On UNKNOWN, check the exit status: a
non-zero status means the period could not be read, and a zero status means the rows are good but
their completeness is unknown, which is what a custom tracker returns when no limit is passed.
Never report zero resolved issues from a failed read (#1441).
Scope caveat (forge axis, #711). The PR rows still call
gh pr list(the PR/MR forge abstraction is a separate ticket), so/stakeholder-updateis issue-axis tracker-agnostic — the "resolved issues" row works on GitLab-tracked projects; the "shipped / in-flight PRs" rows are GitHub-only until #711. Thesincefilter on non-GitHub trackers is applied client-side onupdatedAt(gh applies it server-side via theclosed:>=search qualifier).
<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.
아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.
로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.
아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.
WCAG 2.1 AA audit — perceivable, operable, understandable, robust criteria. Deep-dive for /launch-check accessibility.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
WCAG 2.2 AA audit — perceivable, operable, understandable, robust criteria. Deep-dive for /launch-check accessibility.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Browse / search / show / stats AgDRs across the portfolio — recalls "have we decided this before?".
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Analytics audit — SDK config, event naming, funnel completeness, dashboards. Deep-dive for /launch-check analytics.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Record per-PR architecture-review approval for design-artifact PRs (required by the architecture gate). ONLY on an explicit per-PR architect "approved".
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Record per-PR design-review approval (UI merge gate). ONLY on an explicit per-PR designer "approved".
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.