תרגול לסקירת Cursor עם שלוש תקלות קטנות
תרגיל מקורי של מאיץ | אוקטובר 2026

הפרויקט שבור בכוונה. זהו תרגיל לימודי של רשימת משימות, לא קוד לייצור,
לא קוד שיצר Cursor ולא תיעוד של ניסיון מעשי ב־Cursor. בדיקות התרגיל
אומתו מקומית עם Node.js 24.19.0. לא נעשה שימוש ב־Cursor כדי ליצור
או לאמת את החבילה.

קובצי החבילה
- project/src/tasks.mjs: שלוש פונקציות עם שלוש תקלות מכוונות
- checks/acceptance.test.mjs: בדיקות קבלה עצמאיות וקבועות מראש
- README-en.txt: הוראות לקוראים באנגלית
אין תלויות, פרטי חשבון, פניות לרשת או תסריטי התקנה.
השתמשו בהתקנת Node.js קיימת שתומכת ב־node:test, מגרסה 20 ומעלה.
אין צורך ב־npm install. מתוך תיקיית cursor-three-bug-practice שחילצתם:

node --test checks/acceptance.test.mjs

לפני תיקון צפויות ארבע קבוצות בדיקה: OPEN, SORT ו־EMPTY נכשלות,
ו־COMMON עוברת. קוד יציאה שאינו אפס הוא מכוון. הבדיקות מתייחסות
להגדרה המצומצמת שלהלן, ואינן מכסות כל קלט אפשרי.

ההתנהגות הנדרשת
הקלט הוא מערך משימות עם מזהי טקסט ייחודיים, ערכי done בוליאניים
וערכי priority מספריים סופיים. קלט לא תקין אינו חלק מהתרגיל.
1. filterOpen מחזירה רק משימות שבהן done === false, בסדר המקורי,
   ללא שינוי מערך הקלט או האובייקטים שבתוכו.
2. sortedByPriority מחזירה מערך חדש במיון מספרי עולה של עדיפות.
   מספרים נמוכים קודמים לגבוהים; סדרן של משימות בעדיפות זהה נשמר.
   מערך הקלט והאובייקטים שבו נשארים ללא שינוי, גם כשהקלט ריק.
3. completionPercent מחזירה את מספר המשימות שהושלמו חלקי מספר
   המשימות הכולל, כפול 100, ללא עיגול. ברשימה ריקה נדרש 0. הקלט לא משתנה.

דוגמה קבועה, בסדר משמאל לימין
ID       a       b       c       d
Done     false   true    false   true
Priority 3       1       2       1
מזהי המשימות הפתוחות: a, c
סדר העדיפויות: b, d, c, a
הסדר במערך המקורי חייב להישאר: a, b, c, d
אחוז ההשלמה: 50. ברשימה ריקה נדרש 0 במקום NaN.

איך לתרגל
1. שמרו עותק מקורי של החבילה או קובץ המקור. פתחו בעורך רק את תיקיית
   project. השאירו את checks מחוץ לסביבת העבודה שניתנת לעריכה.
   אל תשנו את בדיקות הקבלה כדי לגרום לתיקון שגוי לעבור.
2. התחילו כל אחד משלושת המקרים מעותק חדש של המקור. בקשו תחילה הסבר
   במצב קריאה בלבד. שמרו על אותו מודל, אותן הגדרות ואותה שפת פרומפט.
3. בקשו שינוי רק בפונקציה שנבחרה ובדיקת רגרסיה חדשה עבורה. החריגו
   שינוי תלויות, גישה לרשת ושכתוב שאינו קשור לתקלה.
4. עברו על כל קובץ שהשתנה או נוסף לפני הרצתו. שמרו מקור, גרסה מתוקנת
   ו־diff. מסך diff עשוי להופיע אחרי שהשינויים כבר נשמרו.
5. הריצו בעצמכם את בדיקות הקבלה שלא השתנו, מחוץ לסוכן של העורך.
   שמרו פלט אמיתי, ניסיונות חוזרים ותיקונים ידניים. במקרה של פונקציה
   אחת, הקבוצה שנבחרה ו־COMMON אמורות לעבור ושתי התקלות המכוונות
   שלא תוקנו אמורות להיכשל. שילוב שלושת התיקונים הנכונים אמור להעביר
   את כל הקבוצות.

דוגמת פרומפט ראשון
קרא רק את src/tasks.mjs. הסבר מה filterOpen מחזירה ומדוע. היא אמורה
להחזיר משימות פתוחות, שבהן done === false, בלי לשנות את הקלט או את
הסדר. הפנה לשורה הרלוונטית. אל תערוך קבצים ואל תריץ פקודות.

לאחר מכן אפשר לבקש
תקן רק את filterOpen בתוך src/tasks.mjs והוסף בדיקת רגרסיה. השאר את
יתר הפונקציות ובדיקות הקבלה העצמאיות ללא שינוי. אל תריץ פקודות,
תתקין תלויות, תשתמש ברשת או תקרא מחוץ לפרויקט. הסבר את השינוי
וציין אילו בדיקות עדיין צריך להריץ.

במקרים הבאים החליפו את שם הפונקציה ב־sortedByPriority או
completionPercent וציינו את ההגדרה המתאימה שלמעלה. התחילו בכל פעם
מחדש מהמקור. הפרומפט בעברית לא נבדק ב־Cursor.

השתמשו רק בהתקנה, בחשבון ובמכסה שכבר מותר לכם להשתמש בהם.
אין צורך ב־Cloud Agent או במאגר פרטי. עצרו לפני עלות מפתיעה,
גישה חדשה או התקנה. תרגיל קטן אינו קובע איכות פרומפטים בעברית,
מהירות או אמינות כללית. תעדו רק מה שראיתם בפועל.
הגילוי בכתבה שהיא מבוססת תיעוד בלבד עדיין תקף.

שימוש חוזר
אפשר להעתיק, לשנות ולשתף את התרגיל המקורי ואת בדיקותיו לצורכי
תרגול. הם ניתנים כפי שהם וללא אחריות.
