WCAG 2.1 AA audit — perceivable, operable, understandable, robust criteria. Deep-dive for /launch-check accessibility.
The English summary is being prepared. Showing the original description.
Project snapshot — git state, open PRs + CI, recent merges, in-progress issue. Use `--briefing` for compact form.
The English summary is being prepared. Showing the original description.
Run score Not tested
See how to installReview the instructions the agent will receive before you install.
Writing: read docs/skills/shared/writing-rule.md before you write a durable artifact.
A focused "where am I" view. Where /inbox shows what's waiting on you and /projects shows portfolio health, /status shows the current state of work: branch, dirty files, recent commits, open PRs, and the in-progress issue.
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"
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.
/status # full report (default)
/status --project example-app # full report scoped to one project
/status --verbose # full report with extras
/status --briefing # 4-line "where am I" briefing (slide 6)
/status -b # short form of --briefing
When --briefing (or -b) is passed, skip every other section and shell out to .claude/skills/status/briefing.sh. The full default /status output is unchanged for invocations without the flag.
Iterates every project in apexyard.projects.yaml (the registry at the root of your ops repo), or a single project if --project <name> is passed.
git rev-parse --abbrev-ref HEAD # current branch
git status --porcelain # dirty files
git log --oneline -10 # last 10 commits
git fetch origin --quiet # silently update remote refs
git rev-list --left-right --count origin/main...HEAD # ahead/behind
Output:
Branch: feature/GH-42-csv-export
↑ 3 commits ahead of origin/main, ↓ 0 behind
Dirty: 2 files (M src/export.ts, ?? tests/export.test.ts)
Recent commits:
abc123 feat(#42): scaffold csv writer
def456 test(#42): csv writer happy path
9876ab chore: bump tsconfig target
gh pr list --state open --json number,title,url,headRefName,statusCheckRollup,reviewDecision
For each PR, show:
#42 feat(#42): CSV export 🟡 review pending ✅ CI green https://…
#41 fix(#37): timezone bug ✅ approved ❌ CI failed https://…
CI status maps:
SUCCESS → ✅ CI greenFAILURE → ❌ CI failedPENDING → 🟡 CI pending— no CIgh pr list --state merged --limit 5 \
--json number,title,mergedAt,author,url
Recently merged:
#40 chore: bump deps merged 2h ago by octocat https://…
#39 fix(#36): edge case merged 1d ago by octocat https://…
The "current" issue is the one whose number matches the current branch (feature/GH-42-… → issue #42):
ISSUE=$(git rev-parse --abbrev-ref HEAD | grep -oE 'GH-[0-9]+|[A-Z]+-[0-9]+' | head -1 | grep -oE '[0-9]+')
gh issue view $ISSUE --json number,title,state,assignees,labels,url
Show:
In progress: #42 — Add CSV export
Assigned: @octocat
Labels: feature, priority-high
State: open
URL: https://…
If the branch doesn't carry an issue ID, say so and suggest:
No issue ID in the current branch name.
Convention: feature/GH-42-description (or APE-42, ENG-42, etc.)
ls docs/agdr/ 2>/dev/null | tail -3
Recent AgDRs:
AgDR-0007-csv-format-choice.md
AgDR-0006-job-runner.md
Surface anything unusual:
.env, *.pem, *.key)main/master but has local commits (you should be on a feature branch)origin/main (rebase recommended)Run sections A–D for each project in the registry. Use a per-project header:
═══════════════════════════════════════
PROJECT: example-app (active)
═══════════════════════════════════════
Branch: main
↑ 0 ahead, ↓ 0 behind
Dirty: 0 files
Open PRs: 2
…
Recently merged: 3
…
═══════════════════════════════════════
PROJECT: billing-api (handover)
═══════════════════════════════════════
…
If a project's workspace isn't cloned locally, show GitHub data only and mark git sections as (workspace not cloned).
--verbose adds:
git diff --stat)--project <name>)STATUS — example-app — 2026-04-06 09:14
========================================
Git:
Branch: feature/GH-42-csv-export
↑ 3 ahead · ↓ 0 behind · 2 dirty files
Open PRs (1):
#42 feat(#42): CSV export 🟡 review pending ✅ CI green https://…
Recently merged (3):
#41 fix(#37): timezone bug merged 2h ago
#40 chore: bump deps merged 1d ago
#39 feat(#35): jwt rotation merged 2d ago
In progress: #42 — Add CSV export priority-high https://…
Recent AgDRs:
AgDR-0007-csv-format-choice.md
Warnings:
⚠ 1 untracked .env.local file (don't commit it)
--briefing / -b)A compact 4-line "where am I" snapshot — workspace, ticket, branch, role. Designed to answer the orientation question in 2 seconds at the top of a session, instead of running 3 skills (/projects, /inbox, /status). This is the same output produced by bin/apexyard status (the CLI shim — see below), so the on-screen view in Claude Code and the shell view stay identical.
Output shape (me2resh/apexyard#182):
Active workspace: example-app
Active ticket: #42 — Add CSV export
Branch: feature/GH-42-csv-export
Role set: backend
Behaviour:
| Field | Source |
|---|---|
| Active workspace | cwd: <ops_root>/workspace/<name>/... → <name>; <ops_root> exactly → (ops); anywhere else → (unknown) |
| Active ticket | The marker of the working tree the cwd is in (apexyard-ticket in its git dir, resolved by .claude/hooks/_lib-active-ticket.sh). A cwd outside the ops fork and its registered clones has no marker. Format: #<number> — <title>. No marker → (none) |
| Branch | git branch --show-current, run inside the inferred workspace dir (or cwd if no workspace). Detached HEAD or no git repo → (no branch) |
| Role set | Active ticket's labels — first match against the canonical list (backend, frontend, qa, security, platform, sre, data, ux, ui, product, tech-lead, plus the -engineer / -auditor / -designer / -manager / -lead long forms). No match (or no ticket) → <none — inferred per task> |
Implementation: the logic lives in .claude/skills/status/briefing.sh so it's testable in isolation and runnable from a plain shell (no Claude Code dependency). Smoke tests at .claude/hooks/tests/test_status_briefing.sh.
When invoked from inside Claude Code as /status --briefing, run the helper:
bash .claude/skills/status/briefing.sh
When invoked from a shell as apexyard status, the same helper runs via bin/apexyard (see § "CLI shim" below).
V1 ships label-based inference only — (a) on the trigger list in #182. The (b) recent-edits and (c) prompt-history strategies are explicit non-goals for v1; they land in a follow-up ticket if the basic version proves useful.
apexyard statusbin/apexyard is a small bash script that exposes briefing mode at the shell:
# Install (one-time)
ln -s "$(pwd)/bin/apexyard" ~/.local/bin/apexyard
# Use from anywhere inside the fork or any workspace/<name>/ clone
apexyard status
The shim walks up from $PWD looking for the apexyard fork root — the .apexyard-fork marker (split-portfolio v2) OR the legacy onboarding.yaml + apexyard.projects.yaml pair (v1) — then runs the same briefing helper. No PATH-shadowing of the claude binary, no recursion into Claude Code — pure bash end-to-end.
gh is unavailable, show git data and a warning.env is dangerous/inbox — what's waiting on you across projects/tasks — actionable TODOs with URLs/projects — portfolio table viewPart of ApexYard — multi-project SDLC framework for Claude Code · MIT.
No reviews yet. Tell others what you thought.
No login needed. Share how it worked for you, ask a question, or note where it did not run.
No comments yet. Be the first to write one.
WCAG 2.1 AA audit — perceivable, operable, understandable, robust criteria. Deep-dive for /launch-check accessibility.
The English summary is being prepared. Showing the original description.
WCAG 2.2 AA audit — perceivable, operable, understandable, robust criteria. Deep-dive for /launch-check accessibility.
The English summary is being prepared. Showing the original description.
Browse / search / show / stats AgDRs across the portfolio — recalls "have we decided this before?".
The English summary is being prepared. Showing the original description.
Analytics audit — SDK config, event naming, funnel completeness, dashboards. Deep-dive for /launch-check analytics.
The English summary is being prepared. Showing the original description.
Record per-PR architecture-review approval for design-artifact PRs (required by the architecture gate). ONLY on an explicit per-PR architect "approved".
The English summary is being prepared. Showing the original description.
Record per-PR design-review approval (UI merge gate). ONLY on an explicit per-PR designer "approved".
The English summary is being prepared. Showing the original description.