סקיל Scaffold Exercises
scaffold-exercises הוא סקיל לקלוד קוד שבונה מבנה תיקיות לתרגילי קורס: סקשנים, בעיות, פתרונות והסברים, שעוברים בדיקת lint. במקום ליצור ידנית עשרות תיקיות וקבצים עם מספור עקבי ושמות תקינים, הסקיל מקבל תוכנית קורס ומפיק את כל השלד אוטומטית. הוא יוצר תיקיות ממוספרות, קובצי readme לא ריקים בכל תת-תיקייה, מריץ את ה-linter, ומתקן עד שהכל עובר. למעבר ומספור מחדש הוא משתמש ב-git mv כדי לשמור על היסטוריית הגרסאות. בפרויקטי הפיתוח שאני מוביל, מבנה תוכן אחיד וצפוי חוסך זמן ומונע טעויות. במדריך תקבלו את כל ההנחיות, ארבעה תרחישי שימוש, וצ'קליסט איכות.
פקודת התקנה
npx skills add mattpocock/skills@scaffold-exercises -g -y
ההתקנה מתבצעת דרך מנהל החבילות הרשמי של הסקילים בפקודה אחת. הסקיל הוא קובץ Markdown פתוח מהמאגר של מאט פוקוק, ומופעל כשמבקשים לבנות שלד תרגילים. אפשר להוריד ולבדוק את הקוד דרך הכפתורים שבראש העמוד.
מה הסקיל כולל?
הסקיל מתעד בניית שלד לתרגילי קורס: תיקיות ממוספרות לסקשנים ותרגילים, תת-תיקיות בעיה, פתרון והסבר, קובצי readme תקינים, הרצת lint עד מעבר, ומעבר עם git mv.
קוד הסקיל המלא
---
name: scaffold-exercises
description: Create exercise directory structures with sections, problems, solutions, and explainers that pass linting. Use when user wants to scaffold exercises, create exercise stubs, or set up a new course section.
---
# Scaffold Exercises
Create exercise directory structures that pass `pnpm ai-hero-cli internal lint`, then commit with `git commit`.
## Directory naming
- **Sections**: `XX-section-name/` inside `exercises/` (e.g., `01-retrieval-skill-building`)
- **Exercises**: `XX.YY-exercise-name/` inside a section (e.g., `01.03-retrieval-with-bm25`)
- Section number = `XX`, exercise number = `XX.YY`
- Names are dash-case (lowercase, hyphens)
## Exercise variants
Each exercise needs at least one of these subfolders:
- `problem/` - student workspace with TODOs
- `solution/` - reference implementation
- `explainer/` - conceptual material, no TODOs
When stubbing, default to `explainer/` unless the plan specifies otherwise.
## Required files
Each subfolder (`problem/`, `solution/`, `explainer/`) needs a `readme.md` that:
- Is **not empty** (must have real content, even a single title line works)
- Has no broken links
When stubbing, create a minimal readme with a title and a description:
```md
# Exercise Title
Description here
```
If the subfolder has code, it also needs a `main.ts` (>1 line). But for stubs, a readme-only exercise is fine.
## Workflow
1. **Parse the plan** - extract section names, exercise names, and variant types
2. **Create directories** - `mkdir -p` for each path
3. **Create stub readmes** - one `readme.md` per variant folder with a title
4. **Run lint** - `pnpm ai-hero-cli internal lint` to validate
5. **Fix any errors** - iterate until lint passes
## Lint rules summary
The linter (`pnpm ai-hero-cli internal lint`) checks:
- Each exercise has subfolders (`problem/`, `solution/`, `explainer/`)
- At least one of `problem/`, `explainer/`, or `explainer.1/` exists
- `readme.md` exists and is non-empty in the primary subfolder
- No `.gitkeep` files
- No `speaker-notes.md` files
- No broken links in readmes
- No `pnpm run exercise` commands in readmes
- `main.ts` required per subfolder unless it's readme-only
## Moving/renaming exercises
When renumbering or moving exercises:
1. Use `git mv` (not `mv`) to rename directories - preserves git history
2. Update the numeric prefix to maintain order
3. Re-run lint after moves
Example:
```bash
git mv exercises/01-retrieval/01.03-embeddings exercises/01-retrieval/01.04-embeddings
```
## Example: stubbing from a plan
Given a plan like:
```
Section 05: Memory Skill Building
- 05.01 Introduction to Memory
- 05.02 Short-term Memory (explainer + problem + solution)
- 05.03 Long-term Memory
```
Create:
```bash
mkdir -p exercises/05-memory-skill-building/05.01-introduction-to-memory/explainer
mkdir -p exercises/05-memory-skill-building/05.02-short-term-memory/{explainer,problem,solution}
mkdir -p exercises/05-memory-skill-building/05.03-long-term-memory/explainer
```
Then create readme stubs:
```
exercises/05-memory-skill-building/05.01-introduction-to-memory/explainer/readme.md -> "# Introduction to Memory"
exercises/05-memory-skill-building/05.02-short-term-memory/explainer/readme.md -> "# Short-term Memory"
exercises/05-memory-skill-building/05.02-short-term-memory/problem/readme.md -> "# Short-term Memory"
exercises/05-memory-skill-building/05.02-short-term-memory/solution/readme.md -> "# Short-term Memory"
exercises/05-memory-skill-building/05.03-long-term-memory/explainer/readme.md -> "# Long-term Memory"
```
מה זה scaffold-exercises ולמה הסקיל הזה שונה?
scaffold-exercises פותר עבודה ידנית מייגעת בבניית קורס: יצירת עשרות תיקיות עם מספור עקבי, תת-תיקיות לכל תרגיל, וקובצי readme שלא ריקים, הכל בשמות תקינים שעוברים בדיקה. עשייה ידנית גוזלת זמן ומלאה בטעויות קטנות. הסקיל מקבל את התוכנית ומפיק את כל השלד בבת אחת.
מה שמייחד אותו הוא העמידה ב-lint כיעד. הסקיל לא רק יוצר תיקיות, אלא דואג שהמבנה יעבור את ה-linter של הקורס: מספור נכון, תת-תיקיות חובה, קובצי readme לא ריקים, בלי קישורים שבורים ובלי קבצים אסורים. הוא יוצר, מריץ lint, ומתקן עד שהכל עובר. למעבר ומספור מחדש הוא משתמש ב-git mv כדי לשמור היסטוריה. כך מקבלים מבנה קורס נקי ותקין מהרגע הראשון.
ההבדל מורגש בעקביות. במקום מבנה לא אחיד עם שגיאות מספור, מקבלים שלד צפוי שעובר בדיקה. בשילוב עם סקיל implement למילוי קוד התרגילים, אפשר לעבור משלד ריק לקורס מלא בצורה מסודרת, וזה צירוף חזק ליוצרי תוכן לימודי.
מה scaffold-exercises נותן לקלוד קוד?
הסקיל מוסיף לקלוד יכולת לבנות שלד קורס תקין: תיקיות ממוספרות, תת-תיקיות חובה, קובצי readme לא ריקים, ועמידה בבדיקת lint עד מעבר מלא.
מבנה תיקיות ממוספר
הסקיל יוצר תיקיות סקשן ותרגיל עם מספור עקבי ושמות תקינים בפורמט dash-case. כך כל הקורס מסודר לפי סדר ברור, וקל לנווט בו. המספור האחיד מונע בלגן ומבטיח שכל תרגיל נמצא במקום הנכון בסדר הלימוד.
תת-תיקיות בעיה, פתרון והסבר
לכל תרגיל הסקיל יוצר את תת-התיקיות המתאימות: בעיה למרחב העבודה של הלומד, פתרון לייחוס, והסבר לחומר התיאורטי. כך כל תרגיל בנוי באותו פורמט, והלומד יודע בדיוק מה לצפות בכל חלק.
קובצי readme תקינים
כל תת-תיקייה מקבלת קובץ readme עם כותרת ותיאור, לא ריק ובלי קישורים שבורים. הסקיל יוצר שלד מינימלי אך תקין שאפשר למלא בהמשך. כך אף תיקייה לא נשארת ריקה, וכל חלק מתחיל עם בסיס תוכן ברור.
עמידה ב-lint כיעד
הסקיל מריץ את ה-linter של הקורס ומתקן שגיאות עד שהכל עובר: מספור, תת-תיקיות חובה, readme לא ריק ובלי קבצים אסורים. כך השלד תקין מהרגע הראשון, ולא נדרש מעבר ידני לאיתור בעיות מבנה.
ארבע היכולות הופכות את קלוד לבונה שלד קורס מסודר. בעבודות שלי, מבנה תוכן אחיד ותקין מהרגע הראשון חסך שעות של יצירה ידנית ותיקוני מספור.
למי הסקיל הזה מתאים?
יוצרי קורסים טכניים: זה הקהל המובהק. בניית מבנה תרגילים ידנית גוזלת זמן ומלאה בטעויות. הסקיל מפיק את כל השלד מתוך תוכנית, תקין ועובר lint, כך שאפשר להתמקד בתוכן ולא בתשתית.
מרצים ומדריכים: כשבונים סדרת שיעורים עם תרגילים, מבנה אחיד עוזר ללומדים לנווט. הסקיל מבטיח שכל תרגיל בנוי באותו פורמט, כך שחווית הלמידה עקבית לאורך הקורס.
צוותי תוכן לימודי: כשכמה אנשים בונים קורס, סטנדרט מבנה משותף קריטי. הסקיל אוכף את אותו מבנה ומספור לכולם, כך שהקורס נשאר עקבי גם כשעובדים עליו במקביל.
בוני בוטקמפים וסדנאות: סדנה אינטנסיבית בנויה מהרבה תרגילים קצרים. גם בעבודות אוטומציה שלי, בניית שלד אוטומטית במקום ידנית מקצרת הקמה ומפנה זמן לתוכן עצמו.
מי שמשפץ קורס קיים: לפעמים צריך למספר ולסדר מחדש תרגילים. הסקיל משתמש ב-git mv לשמירת היסטוריה ומריץ lint אחרי כל מעבר, כך שהסידור מחדש בטוח ולא שובר את המבנה.
מי שפחות יתאים: מי שכותב מסמך בודד או תוכן בלי מבנה תרגילים ממוספר יזדקק לכלי אחר. הסקיל מבריק דווקא בבניית שלד לקורס רב-תרגילים שצריך לעמוד בבדיקת מבנה.
איך scaffold-exercises עזר לי בפרויקטים אמיתיים
שלד קורס מלא מתוך תוכנית
היתה לי תוכנית קורס עם סקשנים ותרגילים. במקום ליצור עשרות תיקיות ידנית, נתתי לסקיל את התוכנית והוא בנה את כל השלד: תיקיות ממוספרות, תת-תיקיות וקובצי readme. תוך דקות היה לי מבנה מלא ותקין, מוכן למילוי תוכן.
מבנה שעבר lint מהרגע הראשון
בעבר נתקלתי בשגיאות מבנה רק אחרי שבניתי הכל. הסקיל יצר את השלד, הריץ את ה-linter, ותיקן עד שהכל עבר. קיבלתי מבנה תקין מההתחלה, בלי מעבר ידני לאיתור תיקיות ריקות, מספור שגוי או קישורים שבורים.
מספור מחדש בלי איבוד היסטוריה
רציתי להוסיף תרגיל באמצע ולמספר מחדש את הבאים. הסקיל השתמש ב-git mv במקום mv, כך שהיסטוריית הגרסאות של כל תיקייה נשמרה. הריץ lint אחרי המעבר, והמבנה נשאר תקין ומסודר, בלי לאבד את העבר של הקבצים.
פורמט אחיד לכל התרגילים
רציתי שכל תרגיל ייראה אותו דבר. הסקיל יצר לכל תרגיל את אותן תת-תיקיות וקובצי readme באותו פורמט. הקורס יצא עקבי, והלומדים ידעו בדיוק מה לצפות בכל תרגיל, מה שהקל על הניווט והלמידה לאורך כל הסדרה.
ארבעת המקרים מראים ששלד אוטומטי משנה את בניית הקורס. כשהמבנה ממוספר נכון, עובר lint, ושומר היסטוריה במעברים, אפשר להתמקד בתוכן הלימודי במקום בעבודת התשתית המייגעת.
סיכום
סקיל scaffold-exercises הוא כלי מצוין לכל מי שבונה קורס עם תרגילים. הוא מפיק שלד מלא מתוך תוכנית: תיקיות ממוספרות, תת-תיקיות בעיה, פתרון והסבר, קובצי readme תקינים, ועמידה בבדיקת lint, עם git mv לשמירת היסטוריה במעברים.
אם אתם מתחילים, בפעם הבאה שתבנו קורס, תנו לסקיל את תוכנית הסקשנים והתרגילים והוא יבנה את כל השלד. תראו כמה זמן נחסך מול יצירה ידנית. משם, אפשר להתמקד בתוכן עצמו.
בפוסטים הבאים אמשיך לסקור את הסקילים החזקים ביותר ליצירה ולפיתוח. האתר של דביר נעמן מרכז את כל הכלים, השיטות והליווי שאני מציע לעסקים שרוצים נוכחות דיגיטלית מנצחת עם בינה מלאכותית.
שיתוף הסקיל
שאלות ותשובות
מה זה בעצם הסקיל scaffold-exercises?
זה סקיל לקלוד קוד שבונה מבנה תיקיות לתרגילי קורס: סקשנים, בעיות, פתרונות והסברים, שעוברים בדיקת lint. הוא מקבל תוכנית קורס ומפיק אוטומטית תיקיות ממוספרות, תת-תיקיות וקובצי readme תקינים, מריץ את ה-linter ומתקן עד שהכל עובר, במקום עבודה ידנית מייגעת.
מה המבנה שהסקיל יוצר לכל תרגיל?
לכל תרגיל הסקיל יוצר תיקייה ממוספרת ובתוכה את תת-התיקיות המתאימות: בעיה למרחב העבודה של הלומד עם משימות, פתרון לייחוס, והסבר לחומר התיאורטי. כל תת-תיקייה מקבלת קובץ readme לא ריק. כשבונים שלד בלבד, ברירת המחדל היא תיקיית הסבר, אלא אם התוכנית מציינת אחרת.
איך מתקינים את הסקיל בקלוד קוד?
בפקודה אחת דרך מנהל החבילות הרשמי של הסקילים, כפי שמופיע בקופסת ההתקנה למעלה. הסקיל הוא קובץ Markdown פתוח מהמאגר של מאט פוקוק. אחרי ההתקנה תנו לו תוכנית קורס עם סקשנים ותרגילים, והוא יבנה את כל השלד ויריץ עליו lint.
מה זה ה-lint שהסקיל מקפיד עליו?
ה-linter בודק שהמבנה תקין: שלכל תרגיל יש תת-תיקיות, שקובץ readme קיים ולא ריק, שאין קבצים אסורים, ושאין קישורים שבורים. הסקיל לא רק יוצר את השלד, אלא מריץ את הבדיקה ומתקן עד שהיא עוברת. כך מקבלים מבנה תקין מהרגע הראשון, בלי הפתעות בהמשך.
איך הסקיל מטפל במספור מחדש של תרגילים?
כשצריך לסדר או למספר מחדש, הסקיל משתמש ב-git mv ולא ב-mv רגיל, כדי לשמור על היסטוריית הגרסאות של כל תיקייה. הוא מעדכן את הקידומת המספרית כדי לשמור על הסדר, ומריץ lint שוב אחרי המעבר. כך הסידור מחדש בטוח ולא שובר את המבנה או מאבד את העבר של הקבצים.
האם הסקיל מתאים רק לסוג קורס מסוים?
הוא מותאם למבנה תרגילים מבוסס סקשנים עם בעיה, פתרון והסבר, ועובד מול ה-linter של מערכת הקורסים שלשמה נבנה. הרעיון של שלד ממוספר ועקבי רלוונטי לקורסים טכניים רבים. למסמך בודד או תוכן בלי מבנה תרגילים הוא פחות מתאים, אבל לקורס רב-תרגילים הוא חוסך הרבה עבודה.
מה היתרון של שלד אוטומטי על פני יצירה ידנית?
יצירה ידנית של עשרות תיקיות עם מספור עקבי וקובצי readme גוזלת זמן ומלאה בטעויות קטנות: מספר שגוי, תיקייה ריקה, שם לא תקין. הסקיל מפיק את כל השלד בבת אחת, אחיד ותקין, ומאמת אותו ב-lint. כך חוסכים זמן רב ומתחילים את העבודה על התוכן עם בסיס נקי.
האם אפשר למלא את התוכן אחרי בניית השלד?
בהחלט, וזו הכוונה. הסקיל בונה שלד מינימלי אך תקין: קובצי readme עם כותרת ותיאור, ותיקיות מוכנות. משם ממלאים את התוכן הלימודי, את המשימות ואת הקוד. אפשר לשלב את זה עם כלי מימוש שממלא את קוד התרגילים, כך עוברים משלד ריק לקורס מלא בצורה מסודרת.