Lekcja 10 · Domykamy otwarty wątek z Lekcji 3
W Lekcji 3 zaproponowałem skill new-lesson, ale zatrzymaliśmy się na "daj znać, czy pasuje Ci zakres". Ta lekcja domyka ten wątek — piszesz i realnie używasz swojego pierwszego skilla, dokładnie tak, jak zakłada Twoja misja.
Zamiast wymyślonego przykładu — spójrzmy na frontmatter skilla teach, który obsługuje tę właśnie rozmowę (.claude/skills/teach/SKILL.md):
---
name: teach
description: Teach the user a new skill or concept, within this workspace.
disable-model-invocation: true
argument-hint: "What would you like to learn about?"
---
disable-model-invocation: true oznacza, że tylko Ty wpisujesz /teach — Claude nigdy nie zdecyduje samo, że "czas na lekcję". argument-hint to podpowiedź widoczna przy wpisywaniu komendy, zanim jeszcze naciśniesz Enter.
SKILL.md może linkować dodatkowe pliki markdown (jak MISSION-FORMAT.md czy LEARNING-RECORD-FORMAT.md w tym właśnie skillu) — Claude doczytuje je dopiero, gdy faktycznie ich potrzebuje przy wykonywaniu konkretnego kroku, a nie wszystkie naraz przy wywołaniu. To ta sama zasada "na żądanie", którą znasz z reguł w Lekcji 7.
Ten workspace ma powtarzalną procedurę, którą do tej pory wykonywałem ręcznie za każdym razem: liczenie kolejnego numeru lekcji i wklejanie tego samego szkieletu HTML. Utwórz plik .claude/skills/new-lesson/SKILL.md z taką zawartością:
---
name: new-lesson
description: Scaffold a new numbered lesson HTML file in lessons/ with the standard skeleton and shared assets already linked.
disable-model-invocation: true
argument-hint: "Temat lekcji (krotko, po polsku)"
---
Instrukcje:
1. Znajdz najwyzszy numer pliku w `lessons/` (wzorzec `NNNN-*.html`)
i wylicz kolejny, czterocyfrowy z zerami wiodacymi.
2. Zamien podany temat na dash-case (male litery, myslniki, bez
polskich znakow diakrytycznych) i uzyj w nazwie pliku:
`lessons/NNNN-temat-w-dash-case.html`.
3. Utworz plik z tym szkieletem, podmieniajac NNNN i TYTUL:
<!DOCTYPE html>
<html lang="pl">
<head>
<meta charset="UTF-8">
<title>Lekcja NNNN — TYTUL</title>
<link rel="stylesheet" href="../assets/style.css">
</head>
<body>
<div class="page">
<p class="eyebrow">Lekcja NNNN · </p>
<h1>TYTUL</h1>
<p class="lede"></p>
<div class="source-rec">
<span class="label">Polecane zrodlo</span>
</div>
<h2></h2>
<div class="callout win"><strong>Kluczowy wniosek:</strong> </div>
<div class="task"><h3>Zadanie praktyczne</h3></div>
<h2>Sprawdz sie</h2>
<div class="quiz"></div>
<div class="ask-teacher">Cos niejasne? Zapytaj mnie wprost.</div>
<div class="lesson-nav">
<span><a href="POPRZEDNIA.html">← Lekcja N-1</a></span>
<span>Nastepna lekcja: ... →</span>
</div>
</div>
<script src="../assets/quiz.js"></script>
</body>
</html>
4. Podmien w poprzedniej lekcji link "Nastepna lekcja" na realny
href do nowego pliku.
5. NIE wypelniaj tresci merytorycznej automatycznie — to wymaga
sprawdzenia RESOURCES.md i researchu. Zatrzymaj sie po szkielecie
i zapytaj, jaki ma byc zakres wiedzy tej lekcji.
.claude/skills/new-lesson/SKILL.md./new-lesson — powinieneś zobaczyć podpowiedź argumentu z argument-hint.1. Skill new-lesson ma disable-model-invocation: true. Kto może go wywołać?
2. Skill teach linkuje w swojej treści plik MISSION-FORMAT.md. Kiedy ten plik trafia do kontekstu?
3. Dlaczego SKILL.md new-lesson celowo NIE generuje automatycznie treści merytorycznej lekcji?
4. Gdzie musi fizycznie leżeć plik, żeby /new-lesson działał w tym konkretnym projekcie?
5. Co odróżnia argument-hint od zwykłego opisu w polu description?