WCAG 2.1 AA audit — perceivable, operable, understandable, robust criteria. Deep-dive for /launch-check accessibility.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Standalone re-entry to the capability tour + full glossary — replays the roles/skills/gates walkthrough and all five terms any time, respecting depth mode. No /setup or /handover coupling.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
실행 점수 미검증
설치 방법 보기설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.
Writing: read docs/skills/shared/writing-rule.md before you write a durable artifact.
This is ticket #911 (M3) of the guided-onboarding walking skeleton (technical
design: docs/technical-designs/onboarding-increment-1.md, § D3/D4 and the
"Standalone /tutorial Reusability Spec"), layered with increment 2's
depth adaptivity (ticket #914, § D2/D5/D7) and now grown by #915 (M7)
to also render the full teach-in-context glossary — US-6 in full
(technical design: docs/technical-designs/onboarding-increment-2.md § D5).
/tutorial is a standalone, read-only re-entry point to the same
capability tour /onboard shows on first run, plus the plain-language
glossary for the five core SDLC terms — for the adopter who skipped either,
missed them, or just wants to see them again without faking a fresh fork.
#914 wired /tutorial onto the shared depth-mode marker so it renders
in the adopter's current terse/guided mode (one short "why this
matters" sentence per section in guided mode; bare, byte-for-byte
unchanged rendering in terse — NFR Backward-compat). This ticket (#915)
adds the full glossary render after the tour — reading the same shared
docs/onboarding/glossary.md asset /onboard's guided-mode asides already
read one term at a time (#913) — and lifts the "tour-only" scope note from
Rule #4 below. It does not touch the depth-mode marker's derivation,
override, or transparency logic (that stays #914's, unchanged), and it does
not touch /onboard's asides or the glossary content itself (that
stays #913's).
/tutorial is deliberately disconnected from /onboard, /setup, and
/handover — it must work identically whether the fork is fresh, already
configured, or predates this feature entirely (US-6 AC). Concretely, it
never:
onboarding.yamlfresh_fork_state() —
see .claude/hooks/_lib-fresh-fork.sh — for gating; that function exists
for /onboard and the SessionStart hook, not for this skill)/setup or /handover flowsapexyard.projects.yaml or any other registryOne deliberate, narrow exception (design § D5): this skill MAY both
read and write the depth-mode marker
(.claude/session/onboarding-depth-mode) — deriving or asking a mode, and
honouring a plain-language override mid-/tutorial, is "solicited"
teaching (the adopter is running /tutorial on purpose), not a side
effect the increment-1 contract forbids. It may also read
.claude/session/onboarding-tech-level if present, purely as a
derivation input — this skill never writes that file.
Zero OTHER side effects. Running /tutorial should leave git status
exactly as it was before the command ran, aside from the gitignored
depth-mode marker under .claude/session/.
Before rendering, resolve the session's depth mode:
source "$(git rev-parse --show-toplevel)/.claude/hooks/_lib-onboarding-depth-mode.sh"
mode=$(depth_mode_read)
If a mode is already set this session (from an earlier /onboard run, or
an earlier /tutorial invocation), depth_mode_read returns it —
terse or guided — and you're done; skip to Step 1.
If no mode marker exists yet (a cold /tutorial on a fork that never ran
/onboard), try to derive one from the increment-1 tech-level signal, if
present:
signal=$(cat .claude/session/onboarding-tech-level 2>/dev/null || echo "")
mode=$(depth_mode_derive_from_signal "$signal") || mode=""
If $mode is still empty (no usable signal), this is a solicited flow
(the adopter ran /tutorial on purpose), so it's fine to ask — use the
SAME one-line fallback question increment-1's /onboard D5 uses:
Quick one — have you used git/GitHub before, or is this new to you?
Map the answer (engineer→terse, non-engineer→guided), then write
it:
depth_mode_write "$mode"
Never block the tour on this — if the adopter doesn't want to answer,
default to terse (the safe default, design § D2/D7) and proceed.
source "$(git rev-parse --show-toplevel)/.claude/hooks/_lib-portfolio-paths.sh" 2>/dev/null || true
The shared asset path is fixed and framework-relative, not portfolio-relative — resolve it from the git toplevel, not via any portfolio-paths helper:
tour_path="$(git rev-parse --show-toplevel)/docs/onboarding/capability-tour.md"
Read docs/onboarding/capability-tour.md with the Read tool. This is the
single source of truth — the same file /onboard Phase 1 reads. Never
paraphrase, summarize, or re-word its content; render it close to verbatim
(D3 in the technical design — rendering parity between the two consumers is
the whole point of the shared-asset seam).
If the file is missing (a corrupted or very old fork), say so plainly and stop:
Can't find the capability tour at docs/onboarding/capability-tour.md — this
fork may be out of date. Try /update to sync with upstream, or check the
file wasn't deleted.
Do not fabricate tour content as a fallback.
Print the file's content (the "What's a role?" / "What's a skill?" /
"What's a gate?" sections plus the "How the loop works" closer), rendered
in the $mode resolved in Step 0:
terse — render exactly as increment 1 did: no framing, no
extra sentences. Byte-for-byte identical to a terse-mode run
(NFR Backward-compat).guided — after the tour content, add ONE short plain-language
"why this matters" sentence (e.g. tying the roles/skills/gates tour
back to what the adopter will actually see day to day). Keep it to a
single sentence — this is generic tour framing, distinct from the
per-term glossary render that follows in Step 3 below.Open with a one-line frame so the adopter knows this is a replay, not a first-run flow:
Replaying the ApexYard capability tour — the same 60-second orientation
/onboard shows on first run. Nothing on your fork changes by running this.
Then render the tour content.
Immediately after the tour, read the shared glossary asset:
glossary_path="$(git rev-parse --show-toplevel)/docs/onboarding/glossary.md"
Read docs/onboarding/glossary.md with the Read tool — the same single
source of truth /onboard's guided-mode asides (#913) slice one term from.
Render all five entries, top to bottom, in file order (issue/ticket,
PR, merge, branch, CI). Never re-type, paraphrase, or hand-copy the
definitions into this skill file — read the file fresh every invocation,
exactly like Step 1's tour read (the increment-1 no-duplication discipline,
extended to the glossary asset per design § "Backward Compatibility &
Reuse").
A /tutorial invocation is solicited — the adopter ran the command on
purpose — so the glossary is always shown, regardless of mode; depth
mode only tunes how it's rendered, it never withholds it (this is the same
solicited/unsolicited line the design draws for /onboard's asides vs. the
on-demand lookup rule, .claude/rules/glossary-lookup.md):
terse — render the five definitions compactly, one after another,
no extra framing.guided — render the same five definitions, each with its
"Example:" line if the entry has one (most already do — see the
glossary's read contract).Open this section with a one-line frame so it reads as a distinct part of the reply, not a continuation of the tour prose:
And here's the glossary — the plain-language meaning of the five terms
you'll see most often:
If docs/onboarding/glossary.md is missing (same corrupted/very-old-fork
case as the tour asset), say so plainly, same shape as Step 1's fallback,
and skip straight to Step 4 — a missing glossary should not block the tour
render that already succeeded.
Same handling as /onboard's — before rendering, and at any later point
this session, check the adopter's message for an override phrase or a
transparency question:
source "$(git rev-parse --show-toplevel)/.claude/hooks/_lib-onboarding-depth-mode.sh"
new_mode=$(depth_mode_classify_override "$ADOPTER_MESSAGE")
[ -n "$new_mode" ] && depth_mode_write "$new_mode"
Confirm a switch in one line (Switching to guided — … /
Switching to terse — …), same as /onboard. For "what mode am I in?",
answer with depth_mode_report — a read, never a write. If the switch
happens after the glossary has already been rendered once this
invocation, there's no need to re-render it — the switch takes effect on
the next /tutorial run or the next /onboard aside, per the
Reversibility NFR; /tutorial itself doesn't loop.
End with a short pointer back to normal work — no branch, no follow-up
questions, no first-win prompt (that's /onboard's job, not this skill's):
That's the tour, and the glossary. Run /tutorial again any time — it's
always safe, always free of side effects.
docs/onboarding/capability-tour.md and docs/onboarding/glossary.md
fresh every invocation; never inline, cache, or hand-copy their prose
into this skill file. If either asset's content needs to change, it
changes in one place and every consumer (/onboard, /tutorial, the
on-demand lookup rule) picks it up automatically.onboarding.yaml, the registry, the active-ticket marker, or the
bootstrap marker — ever. The ONE exception is
.claude/session/onboarding-depth-mode (design § D5): deriving,
asking, writing, or overriding it is in-contract "solicited" teaching,
and it's the only marker this skill may write. Always write it through
the shared helper (_lib-onboarding-depth-mode.sh's depth_mode_write)
— never a raw echo/redirect.fresh_fork_state()./tutorial now renders both shared assets end to end, respecting depth
mode. What it still does NOT do: the per-term, first-encounter guided
asides inside /onboard (that stays #913's — a different firing
algorithm gated on a separate seen-set marker, § D3) and the ambient
any-session single-term lookup (that's .claude/rules/glossary-lookup.md,
also #915 — a rule, not this skill, so it fires even when /tutorial
isn't running). This skill's contract is still "solicited, whole-asset,
side-effect-free render" — it never gates content the way the asides do.Part 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".
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.