tutorial
新規ユーザーが対話形式で操作を体験しながら、研究者、マネージャー、個人利用の3つのコースで、ノート作成から検索までの一連の基本操作を習得できるチュートリアルを開始するSkill。
📜 元の英語説明(参考)
Interactive walkthrough for new users. Learn by doing — each step creates real content in your vault. Three tracks (researcher, manager, personal) with a universal learning arc. Triggers on "/tutorial", "walk me through", "how do I use this".
🇯🇵 日本人クリエイター向け解説
新規ユーザーが対話形式で操作を体験しながら、研究者、マネージャー、個人利用の3つのコースで、ノート作成から検索までの一連の基本操作を習得できるチュートリアルを開始するSkill。
※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o tutorial.zip https://jpskill.com/download/10163.zip && unzip -o tutorial.zip && rm tutorial.zip
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/10163.zip -OutFile "$d\tutorial.zip"; Expand-Archive "$d\tutorial.zip" -DestinationPath $d -Force; ri "$d\tutorial.zip"
完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。
💾 手動でダウンロードしたい(コマンドが難しい人向け)
- 1. 下の青いボタンを押して
tutorial.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
tutorialフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。
詳しい使い方ガイドを見る →- 最終更新
- 2026-05-18
- 取得日時
- 2026-05-18
- 同梱ファイル
- 1
📖 Skill本文(日本語訳)
※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。
ランタイム設定 (ステップ 0 — 処理前)
ドメイン固有の動作を設定するために、これらのファイルを読み込んでください。
-
ops/derivation-manifest.md— ボキャブラリのマッピング、プラットフォームのヒントvocabulary.notesを notes フォルダ名として使用しますvocabulary.note/vocabulary.note_pluralをノートタイプの参照として使用しますvocabulary.reduceを抽出動詞として使用しますvocabulary.reflectを接続発見動詞として使用しますvocabulary.topic_mapを MOC 参照として使用しますvocabulary.inboxを inbox フォルダ名として使用します
-
ops/config.yaml— 処理の深さ、ドメインコンテキスト
これらのファイルが存在しない場合は、汎用的なデフォルトを使用します。
今すぐ実行
ターゲット: $ARGUMENTS
ops/tutorial-state.yamlが存在し、current_step<= 5 の場合: 保存されたステップから再開します- ターゲットが "reset" の場合:
ops/tutorial-state.yamlを削除し、最初からやり直します - 状態ファイルが存在しない場合: トラックの選択から新しいチュートリアルを開始します
今すぐ開始。 以下の参照はフローを定義します。
再開検出
ops/tutorial-state.yaml を読み込みます。存在し、チュートリアルが未完了の場合、以下を表示します。
--=={ ars contexta : tutorial }==--
おかえりなさい。
トラック: [track] [step-progress] ステップ [N] / 5
中断したところから再開します...
保存された current_step にスキップします。トラックを再度尋ねないでください。current_step > 5 の場合、チュートリアルは完了しています — リセットを提案します。
進捗インジケーターの形式:
- ステップ 1 / 5:
[=> ] - ステップ 2 / 5:
[==> ] - ステップ 3 / 5:
[===> ] - ステップ 4 / 5:
[====> ] - ステップ 5 / 5:
[=====>]
トラックの選択 (新しいチュートリアルのみ)
ヘッダーを表示し、AskUserQuestion を使用します。
--=={ ars contexta : tutorial }==--
どのトラックがあなたの仕事に最も適していますか?
(a) 研究者 -- 学術論文、ドメイン
研究、文献処理
(b) 管理者 -- 会議の議事録、戦略ドキュメント、
意思決定の追跡
(c) 個人 -- 日々の観察、目標
設定、内省的なジャーナリング
応答を待ちます。a/b/c を researcher/manager/personal にマッピングします。
初期状態を ops/tutorial-state.yaml に書き込みます。
track: [researcher|manager|personal]
current_step: 1
completed_steps: []
started: [ISO 8601 UTC]
last_activity: [ISO 8601 UTC]
ステップ実行パターン
すべてのステップは、WHY / DO / SEE に従います。各ステップの前に、プログレスバーを表示します。各ステップの後、ops/tutorial-state.yaml を更新します (completed_steps に追加、current_step をインクリメント、last_activity を更新)。
トラック適応リファレンス
各ステップは、その言語と例をトラックに適応させます。構造は同一ですが、内容は異なります。
| ステップ | 研究者 | 管理者 | 個人 |
|---|---|---|---|
| キャプチャ | 論文からの主張 | 会議からの決定 | 一日の気づき |
| 発見 | 論文間のつながり | 意思決定者間のリンク | 観察-目標パターン |
| 処理 | 論文の抽出 | 会議議事録のマイニング | ジャーナルの結晶化 |
| メンテナンス | 古い主張、壊れた引用 | 孤立した決定 | 途絶えた内省 |
| リフレクト | 研究グラフの成長 | 組織の記憶 | 自己認識パターン |
ステップ 1: キャプチャ — 最初の {vocabulary.note} を作成する
WHY:
--=={ ars contexta : tutorial }==--
[=> ] ステップ 1 / 5 -- キャプチャ
すべては、覚えておく価値のある考えから始まります。
トラックに合わせて哲学を適応させます。
| トラック | WHY のフレーミング |
|---|---|
| 研究者 | 「研究は、覚えておく価値のあることに気づいたときに始まります。論文からの主張、研究間のパターン、まだ問われていない質問。システムはこれらを散文的な文のタイトルとしてキャプチャします — 各タイトルは、他のノートにリンクされたときに自然に読める命題です。」 |
| 管理者 | 「優れた意思決定は、キャプチャされた観察から始まります。会議からのパターン、利害関係者の懸念、戦略的な洞察。システムはこれらを、各タイトルが完全な思考である接続されたノートに変えます — 'Q3 計画' のようなラベルではなく、'Q3 の速度はコンテキストスイッチングの削減に依存する' のような主張です。」 |
| 個人 | 「成長は気づきから始まります。散歩中の気づき、週のパターン、何が重要かについての質問。システムはこれらを散文的な文のノートとしてキャプチャします — 各タイトルは、'朝のルーチンは意思決定の疲労を軽減するので効果がある' のように、あなたが本当に信じていることです。」 |
DO:
トラックに合わせて調整されたプロンプトで AskUserQuestion を使用します。
| トラック | プロンプト |
|---|---|
| 研究者 | 「あなたの研究からの主張、観察、または質問を共有してください。1 つの文 — あなたが本当に覚えておき、それを基に構築したいものです。」 |
| 管理者 | 「あなたの仕事からの決定、パターン、または洞察を共有してください。1 つの文 — 会議やプロジェクト全体で追跡する価値のあるものです。」 |
| 個人 | 「あなたの考え、観察、または気づきを共有してください。1 つの文 — あなたが本当に覚えておきたいものです。」 |
入力を実際の {vocabulary.note} に変換します。
- 入力を散文風のタイトルファイル名に変換します (小文字、安全な文字、完全な文)
- YAML フロントマターを作成します。
--- description: [タイトルを超えたコンテキストを追加 — スコープ、メカニズム、または意味合い] topics: ["[[index]]"] created: [今日の日付] --- - その考えを展開する 2〜3 文を書きます
- ハブ {vocabulary.topic_map} にリンクするトピックフッターを追加します
- ファイルを
{vocabulary.notes}/に書き込みます
SEE:
ノートが作成されました:
{vocabulary.notes}/[filename].md
タイトル: [散文的なタイトル]
説明: [説明]
トピック: [[index]]
タイトルが散文としてどのように機能するかを確認してください:
"[[あなたのノートのタイトル]] なので、質問は
...になります"
それがノートをリンク可能にするものです。タイトルは
思考そのものであり、文として表現されています。
状態を更新し、ステップ 2 に進みます。
ステップ 2: 発見 — つながりを見つける
WHY:
--=={ ars contexta : tutorial }==--
[==> ] ステップ 2 / 5 -- 発見
ノート単独ではファイルです。つながるノートは
知識グラフになります。
トラックに適応させます。
| トラック | WHY のフレーミング |
|---|---|
| 研究者 | 「主張がつながると、研究は複合化されます。方法論に関する発見は、ex |
(原文がここで切り詰められています)
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開
Runtime Configuration (Step 0 — before any processing)
Read these files to configure domain-specific behavior:
-
ops/derivation-manifest.md— vocabulary mapping, platform hints- Use
vocabulary.notesfor the notes folder name - Use
vocabulary.note/vocabulary.note_pluralfor note type references - Use
vocabulary.reducefor the extraction verb - Use
vocabulary.reflectfor the connection-finding verb - Use
vocabulary.topic_mapfor MOC references - Use
vocabulary.inboxfor the inbox folder name
- Use
-
ops/config.yaml— processing depth, domain context
If these files don't exist, use universal defaults.
EXECUTE NOW
Target: $ARGUMENTS
- If
ops/tutorial-state.yamlexists andcurrent_step<= 5: resume from saved step - If target is "reset": delete
ops/tutorial-state.yamland start fresh - If no state file exists: begin new tutorial with track selection
START NOW. Reference below defines the flow.
Resume Detection
Read ops/tutorial-state.yaml. If it exists and tutorial is incomplete, display:
--=={ ars contexta : tutorial }==--
Welcome back.
Track: [track] [step-progress] Step [N] of 5
Resuming where you left off...
Skip to the saved current_step. Do NOT re-ask for track. If current_step > 5, tutorial is complete — offer to reset.
Progress indicator format:
- Step 1 of 5:
[=> ] - Step 2 of 5:
[==> ] - Step 3 of 5:
[===> ] - Step 4 of 5:
[====> ] - Step 5 of 5:
[=====>]
Track Selection (new tutorial only)
Display header, then use AskUserQuestion:
--=={ ars contexta : tutorial }==--
Which track fits your work best?
(a) Researcher -- academic papers, domain
research, literature processing
(b) Manager -- meeting notes, strategy docs,
decision tracking
(c) Personal -- daily observations, goal
setting, reflective journaling
Wait for response. Map a/b/c to researcher/manager/personal.
Write initial state to ops/tutorial-state.yaml:
track: [researcher|manager|personal]
current_step: 1
completed_steps: []
started: [ISO 8601 UTC]
last_activity: [ISO 8601 UTC]
Step Execution Pattern
Every step follows WHY / DO / SEE. Before each step show progress bar. After each step, update ops/tutorial-state.yaml (append to completed_steps, increment current_step, update last_activity).
Track Adaptation Reference
Each step adapts its language and examples to the track. The structure is identical; the content varies.
| Step | Researcher | Manager | Personal |
|---|---|---|---|
| Capture | Claim from a paper | Decision from a meeting | Realization from a day |
| Discover | Cross-paper connections | Decision-stakeholder links | Observation-goal patterns |
| Process | Paper extraction | Meeting note mining | Journal crystallization |
| Maintain | Stale claims, broken citations | Orphaned decisions | Disconnected reflections |
| Reflect | Research graph growth | Institutional memory | Self-knowledge patterns |
Step 1: Capture — Create your first {vocabulary.note}
WHY:
--=={ ars contexta : tutorial }==--
[=> ] Step 1 of 5 -- Capture
Everything starts with a thought worth keeping.
Adapt the philosophy to the track:
| Track | WHY Framing |
|---|---|
| researcher | "Research begins when you notice something worth remembering. A claim from a paper, a pattern across studies, a question that has not been asked. The system captures these as prose-sentence titles — each title is a proposition that reads naturally when linked to other notes." |
| manager | "Good decisions start with captured observations. A pattern from a meeting, a stakeholder concern, a strategic insight. The system turns these into connected notes where each title is a complete thought — not a label like 'Q3 planning' but a claim like 'Q3 velocity depends on reducing context switching'." |
| personal | "Growth starts with noticing. A realization during a walk, a pattern in your week, a question about what matters. The system captures these as prose-sentence notes — each title is something you genuinely believe, like 'morning routines work because they reduce decision fatigue'." |
DO:
Use AskUserQuestion with track-adapted prompt:
| Track | Prompt |
|---|---|
| researcher | "Share a claim, observation, or question from your research. One sentence — something you genuinely want to remember and build on." |
| manager | "Share a decision, pattern, or insight from your work. One sentence — something worth tracking across meetings and projects." |
| personal | "Share a thought, observation, or realization. One sentence — something you genuinely want to remember." |
Transform input into a real {vocabulary.note}:
- Convert input to prose-as-title filename (lowercase, safe characters, full sentence)
- Create YAML frontmatter:
--- description: [adds context beyond the title — scope, mechanism, or implication] topics: ["[[index]]"] created: [today's date] --- - Write 2-3 sentences developing the thought
- Add Topics footer linking to the hub {vocabulary.topic_map}
- Write the file to
{vocabulary.notes}/
SEE:
Note created:
{vocabulary.notes}/[filename].md
Title: [the prose title]
Description: [the description]
Topics: [[index]]
Notice how the title works as prose:
"Since [[your note title]], the question
becomes..."
That is what makes notes linkable. The title
IS the thought, expressed as a sentence.
Update state, then continue to Step 2.
Step 2: Discover — Find connections
WHY:
--=={ ars contexta : tutorial }==--
[==> ] Step 2 of 5 -- Discover
A note alone is a file. Notes that connect
become a knowledge graph.
Adapt to track:
| Track | WHY Framing |
|---|---|
| researcher | "Research compounds when claims connect. A finding about methodology might extend a finding about tools. A pattern in one study might contradict a pattern in another. These connections are where insight lives — not in individual papers but in the relationships between ideas." |
| manager | "Organizational knowledge compounds when decisions connect. A hiring decision relates to a capacity concern. A strategy shift affects multiple projects. The connections reveal the system behind individual choices." |
| personal | "Self-knowledge compounds when observations connect. A morning routine insight might connect to an energy pattern. A relationship observation might extend a communication realization. The connections reveal what you actually believe." |
DO:
Use AskUserQuestion with track-adapted prompt:
| Track | Prompt |
|---|---|
| researcher | "Share a second research insight — ideally one that connects to your first note, but any genuine claim works." |
| manager | "Share another work observation — ideally one that relates to the first, but any genuine insight works." |
| personal | "Share another thought — ideally one that connects to the first, but any genuine observation works." |
Create a second {vocabulary.note}. Then search for connections to the first {vocabulary.note}:
- Read both {vocabulary.note_plural}
- Apply the articulation test: can you complete "[[note A]] connects to [[note B]] because [specific reason]"?
- If genuine connection exists:
- Add inline wiki link in one or both {vocabulary.note_plural}
- Add relevant_notes entry with context phrase
- If no genuine connection exists:
- Explain that forced connections are worse than none
- "These notes do not connect yet, and that is fine. The graph grows over time."
SEE:
If connected:
Note created and connected:
{vocabulary.notes}/[filename].md
Connection:
[[note A]] connects to [[note B]]
because [your articulated reason]
This is what /reflect does at scale --
finding genuine connections across your
entire graph.
If not connected:
Note created:
{vocabulary.notes}/[filename].md
No genuine connection to your first note.
That is fine -- forced connections pollute
the graph. Real connections emerge as your
graph grows.
Update state, then continue to Step 3.
Step 3: Process — Extract structured knowledge
WHY:
--=={ ars contexta : tutorial }==--
[===> ] Step 3 of 5 -- Process
Raw material becomes structured knowledge
through extraction. You mine for atomic
insights, not summaries.
Adapt to track:
| Track | WHY Framing |
|---|---|
| researcher | "A paper contains dozens of claims, but only some matter for your research. Extraction means identifying the propositions worth keeping — the specific claims, the methodological choices, the surprising findings — and turning each into its own note. This is /{reduce} in action." |
| manager | "Meeting notes and strategy docs contain buried insights. Extraction means finding the decisions, the assumptions, the risk factors — and giving each its own note that can be tracked and connected. This is /{reduce} in action." |
| personal | "Journal entries and daily notes contain unprocessed observations. Extraction means finding the insights, the patterns, the genuine realizations — and crystallizing each into a note that compounds with everything else. This is /{reduce} in action." |
DO:
Use AskUserQuestion with track-adapted prompt:
| Track | Prompt |
|---|---|
| researcher | "Paste a short paragraph of raw material — notes from a paper, an article snippet, or research observations. Two to five sentences is enough." |
| manager | "Paste a short paragraph of raw material — meeting notes, a strategy snippet, or project observations. Two to five sentences is enough." |
| personal | "Paste a short paragraph of raw material — journal entry, conversation notes, or daily observations. Two to five sentences is enough." |
Extract 1-2 atomic insights:
- Identify propositions worth keeping (not summaries, not logistics)
- Apply selectivity: skip purely conversational content, temporary logistics, vague observations
- Check for connections to existing tutorial {vocabulary.note_plural}
- Create {vocabulary.note}(s) with proper schema
- Link where genuine connections exist
SEE:
Extracted [N] insight(s) from your material:
1. [title of extracted note]
[connection status: linked to [[note]] | standalone]
Raw material -> atomic {vocabulary.note_plural} -> connected graph.
This is what /{reduce} does. It finds the
propositions worth keeping and turns each into
a composable {vocabulary.note}.
If nothing worth extracting:
No atomic insights found in this material.
That happens — not everything contains
extractable propositions. The selectivity
gate is working: better to skip than to
create low-value {vocabulary.note_plural}.
Update state, then continue to Step 4.
Step 4: Maintain — Check vault health
WHY:
--=={ ars contexta : tutorial }==--
[====> ] Step 4 of 5 -- Maintain
A knowledge system that is not maintained
decays. Health checks catch problems before
they compound.
Adapt to track:
| Track | WHY Framing |
|---|---|
| researcher | "Research graphs decay when citations break, claims go stale, and notes lose their connections. Health checks catch orphaned claims, missing descriptions, and broken links before they undermine your research integrity." |
| manager | "Organizational knowledge decays when decisions are orphaned, links break, and notes lose context. Health checks catch these before they undermine institutional memory." |
| personal | "Personal knowledge decays when reflections are disconnected, descriptions are vague, and patterns are missed. Health checks catch these before insights are lost." |
DO:
No AskUserQuestion. Run automated mini health check on tutorial {vocabulary.note_plural}:
- Description check: Does every {vocabulary.note} have a description field? Does the description add info beyond the title?
- Link check: Do all wiki links resolve to existing files?
- {vocabulary.topic_map} check: Does every {vocabulary.note} appear in at least one {vocabulary.topic_map}'s Topics footer?
- Orphan check: Does any {vocabulary.note} have zero incoming links?
- Connection density: How many wiki links per {vocabulary.note}?
For each check, report PASS or WARN with specifics.
SEE:
Health check on your [N] tutorial {vocabulary.note_plural}:
| Check | Status | Detail |
|--------------------|--------|---------------------|
| Descriptions | PASS | All notes described |
| Links | PASS | No broken links |
| {vocabulary.topic_map} membership | WARN | [note] not in MOC |
| Orphan risk | PASS | All notes connected |
| Connection density | PASS | Avg [N] links/note |
This is what /health does at scale. It catches
problems automatically so the graph stays
healthy as it grows.
If warnings found, fix them automatically (add missing {vocabulary.topic_map} links, improve descriptions) and explain what was fixed.
Update state, then continue to Step 5.
Step 5: Reflect — Review what you built
WHY:
--=={ ars contexta : tutorial }==--
[=====>] Step 5 of 5 -- Reflect
Step back and see the system you started
building. A few notes are a beginning.
The question is what comes next.
Adapt to track:
| Track | WHY Framing |
|---|---|
| researcher | "You have the beginning of a research graph. Every paper you process, every claim you extract, every connection you find makes the graph more valuable. The compound effect means note 100 is worth more than note 1 because it has 99 potential connections." |
| manager | "You have the beginning of organizational memory. Every meeting processed, every decision tracked, every connection found makes the system more valuable. Institutional knowledge stops living in people's heads and starts living in the graph." |
| personal | "You have the beginning of a self-knowledge system. Every observation captured, every pattern named, every connection found makes the system more valuable. You start seeing yourself through accumulated evidence, not just today's feeling." |
DO:
Display vault state summary:
What you built:
{vocabulary.note_plural}: [N]
Connections: [M] wiki links
{vocabulary.topic_map_plural}: linked to [[index]]
Your graph so far:
[[note 1]] ----> [[note 2]]
\ |
'-> [[note 3]] -'
(Simple ASCII graph showing actual connections between the tutorial {vocabulary.note_plural}.)
Then show methodology awareness:
Your system also knows about itself:
ops/methodology/ Your system's self-knowledge
/ask [question] Ask the research behind your
system's design
Try: /ask "why does my system use [relevant feature]?"
Then use AskUserQuestion:
"What would you like to work on next? You can:\n\n (a) Capture more thoughts (just tell me)\n (b) Process raw material (/{reduce} [paste or file])\n (c) Explore your system (/next)\n (d) Learn more about a specific command (/help [command])"
This is the handoff to productive use. Do not process the response — just acknowledge their choice and point them in the right direction.
SEE:
--=={ ars contexta : tutorial }==--
[======] Complete
You built a working knowledge graph in five
steps. Every {vocabulary.note} you add from here
compounds the value of what already exists.
Quick reference:
/ask [question] Query your graph
/learn [topic] Research and grow
/{reduce} [source] Extract insights
/{reflect} Find connections
/health Check system health
/next What to do next
/help Full command guide
Completion
After step 5, write final state:
track: [track]
current_step: 6
completed_steps: [1, 2, 3, 4, 5]
started: [original timestamp]
last_activity: [now]
completed: [now]
State Persistence
After EVERY step, write to ops/tutorial-state.yaml. Non-negotiable — the tutorial must resume across sessions.
Format:
track: [researcher|manager|personal]
current_step: [1-6, where 6 = complete]
completed_steps: [array of completed step numbers]
started: [ISO 8601 UTC]
last_activity: [ISO 8601 UTC]
completed: [ISO 8601 UTC, only when done]
Session-start integration: If state exists and incomplete, the session-start hook should surface: "You have an unfinished tutorial (step N of 5). Resume with /tutorial."
Quality Principles
Learn by doing. Every step creates real content in the vault. No hypothetical examples. The {vocabulary.note_plural} created during the tutorial are real {vocabulary.note_plural} that persist and compound with future content.
WHY before HOW. Every step explains why this matters before asking the user to do anything. Understanding motivation prevents the tutorial from feeling like a checklist.
Genuine, not forced. If the user's input does not produce a meaningful connection, say so. Do not fake connections to make the tutorial feel successful. Honesty about when connections exist (and when they do not) teaches the right mental model.
Track-adapted, not track-locked. The track changes the examples and language, not the structure. A researcher and a personal user go through the same five steps with different framing.
Progressive complexity. Step 1 is trivially easy (share a thought). Step 5 requires understanding the system. Each step builds on the previous one. No step requires knowledge the tutorial has not yet provided.
Edge Cases
User pastes nothing in Step 3: Offer a pre-written example paragraph appropriate to their track. "Here is a sample you can use to see how extraction works:"
User wants to skip a step: Allow it. Update state to mark the step as skipped (not completed). The tutorial should not feel like a gate.
User re-runs /tutorial after completion: Show completion status and offer reset. "Your tutorial is complete. Run /tutorial reset to start fresh."
User input is too short (single word): Gently expand. "Can you develop that into a full sentence? The system works best with complete thoughts — for example, instead of 'meetings' try 'weekly meetings lose value when action items are not tracked'."