# קובץ הנחיות אחד עבור Claude Code, Codex ו-Cursor בשנת 2026

> מקור אמת אחד עבור Claude Code, Codex ו-Cursor בשנת 2026: מתי Claude Code קורא את AGENTS.md בעצמו, ייבוא של @AGENTS.md לתוך CLAUDE.md, קישור סמלי ו-/init.

Source: https://ailoot.ai/blog/he/agents-md-claude-md-one-instruction-file/
Canonical: https://ailoot.ai/blog/he/agents-md-claude-md-one-instruction-file/
Language: he
Publisher: Ailoot (https://ailoot.ai/)
Translation: guide-004
Revision: sha256-5bcb3be6f4a8eb788aee4dc459e089fb355a8430cddc93723f0aeabb0409784f


למידע על השירות, עיינו ב[תיעוד של Ailoot](https://ailoot.ai/docs/).

## מה משתנה כשמשתמשים יחד ב-Claude Code, ב-Codex וב-Cursor?

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Key takeaway">

הנקודה המרכזית

בשנת 2026, ההתקנה הטיפוסית של מתכנתים בעזרת vibe כוללת לא כלי אחד, אלא 3–5. Claude Code ככלי הראשי, Codex למשימות אוטונומיות ארוכות, ו-Cursor לעריכות מהירות בסביבת הפיתוח המשולבת. לכל אחד יש קובץ הנחיות משלו: `CLAUDE.md`, `AGENTS.md`, `.cursorrules`. אם מסנכרנים אותם ידנית, עורכים שורה אחת בחמישה מקומות, שוכחים לעדכן את Cursor, וכעבור שבוע Claude ו-Codex נותנים תוצאות שונות לאותה הנחיה.

</div>

בדוגמה המתוארת, Claude Code הוא הכלי הראשי, ואילו Codex ו-Cursor משמשים למשימות מסוימות. ב-`CLAUDE.md` שלי יש כ-250 שורות של הנחיות: מה לקרוא ובאיזה סדר, במה אסור לגעת, באילו פקודות להשתמש לפריסה, וכללי עיצוב ל-commit. כשניסיתי לראשונה את Codex CLI בפרויקט, הוא לא הכיר אף אחד מהכללים: הוא הריץ `git push --force`, חיטט ב-`.env` ושינה שמות של קבצים ברשלנות.

תחילה העתקתי ידנית את `CLAUDE.md` אל `AGENTS.md`. כעבור שבועיים גיליתי שבפרויקט כבר היו ארבע גרסאות של אותה הנחיה: ב-`CLAUDE.md`, ב-`AGENTS.md`, ב-`.cursorrules` וב-`.windsurf/rules/`. כולן היו שונות מעט זו מזו. זו אינה בעיה של Claude או של Cursor; זו המלכודת הבסיסית בכל מערכת עם כמה מקורות אמת. אני דן בכך בהרחבה ב[מדריך לעבודה עם כמה סוכנים](https://ailoot.ai/blog/he/claude-code-codex-together/).

ביוני 2026, תיעוד הזיכרון של Claude Code מבית Anthropic הציע פתרון אחד: קובץ משותף וייבוא. מאז ספטמבר 2026, Claude Code קורא את `AGENTS.md` בעצמו אם בפרויקט אין `CLAUDE.md`, ונדרש ייבוא כשיש לכם כללים שמיועדים במיוחד ל-Claude. בהמשך אסביר מתי `AGENTS.md` יחיד מספיק, איך להגדיר ייבוא ואיך להפריד בין כללים משותפים לכללים שמיועדים ל-Claude בלבד.

## האם Claude Code קורא את AGENTS.md בעצמו?

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Key takeaway">

הנקודה המרכזית

כן, החל מגרסה 2.1.277, שפורסמה ב-18 בספטמבר 2026, אבל רק אם אין `CLAUDE.md`,‏ `.claude/CLAUDE.md` או `CLAUDE.local.md` בספריית העבודה או באחת הספריות שמעליה. אם קיים `CLAUDE.md`, Claude Code קורא כברירת מחדל רק את הקובץ הזה, ו-`AGENTS.md` נכלל באמצעות השורה `@AGENTS.md` בתוך `CLAUDE.md` או באמצעות קישור סמלי. ההתנהגות משתנה ב-`/config`, תחת Project instructions. לפני ספטמבר, Claude Code כלל לא קרא את `AGENTS.md`, וייבוא היה הדרך היחידה.

</div>

לפני ספטמבר 2026, התשובה הייתה „לא”. Issue \#6235, שביקש תמיכה ב-AGENTS.md, היה פתוח מאז אוגוסט 2025 ונסגר ב-17 באוגוסט 2026. תיעוד הזיכרון הצביע כל הזמן על פתרון אחד: ליצור CLAUDE.md ולכלול בו את `AGENTS.md` באמצעות ייבוא. החל מגרסה 2.1.277, התיעוד אומר דבר אחר:

<figure>
<blockquote>
<p>Claude Code יכול לקרוא את <code>AGENTS.md</code> כהנחיות פרויקט, כך שמאגר שכבר הוגדר לעבודה עם סוכנים אחרים פועל בלי <code>CLAUDE.md</code>, ייבוא או הגדרה.</p>
</blockquote>
<figcaption>— Anthropic, https://code.claude.com/docs/en/memory#agents-md</figcaption>
</figure>

הקבצים שבפרויקט קובעים בדיוק מה Claude Code קורא:

| קבצים בפרויקט | מה Claude Code קורא |
|----|----|
| `AGENTS.md`, בלי `CLAUDE.md` או `CLAUDE.local.md` בספריית העבודה או באחת הספריות שמעליה | `AGENTS.md` |
| `AGENTS.md` וגם `CLAUDE.md` (או `CLAUDE.local.md`) בספריית העבודה או באחת הספריות שמעליה | רק `CLAUDE.md` |
| `CLAUDE.md` עם השורה `@AGENTS.md` | `CLAUDE.md`, ובתוכו `AGENTS.md` דרך הייבוא |

לצורך הבדיקה הזאת, `CLAUDE.md`,‏ `.claude/CLAUDE.md` ו-`CLAUDE.local.md` בספריית העבודה ובכל ספרייה שמעליה נחשבים. קובץ אישי `~/.claude/CLAUDE.md`, קובץ מנוהל ארגונית וכללים מתוך `.claude/rules/` אינם נחשבים: הם נטענים לצד `AGENTS.md`.

כשאין `CLAUDE.md`, Claude Code קורא בעת ההפעלה את כל הקבצים `AGENTS.md` ו-`.claude/AGENTS.md` בספריית העבודה ובספריות שמעליה, ומעלה קובץ `AGENTS.md` שבתת-ספרייה כשפותחים קובץ שנמצא בה. גם ייבואי `@path` בתוך `AGENTS.md` פועלים. Claude Code אינו קורא את `AGENTS.local.md`,‏ `AGENTS.override.md` או את התוכן של הספרייה `.agents/`.

הבעיה: גם `CLAUDE.local.md` אישי נחשב. יוצרים קובץ כזה כדי לשמור בו כללים שלא הוכנסו ל-commit, ו-Claude Code מפסיק לקרוא את `AGENTS.md` בלי להודיע. ההגדרה שלהלן פותרת זאת.

ההתנהגות משתנה ב-`/config`, תחת Project instructions:

| הגדרה | מה Claude Code קורא |
|----|----|
| `claude-md-or-agents-md` (ברירת מחדל) | `CLAUDE.md`, או, אם לא `CLAUDE.md` ולא `CLAUDE.local.md` קיימים, `AGENTS.md` |
| `claude-md-and-agents-md` | שני הקבצים: בכל ספרייה, תחילה `CLAUDE.md` ואחריו `AGENTS.md` |
| `claude-md` | רק `CLAUDE.md` |
| `managed-only` | רק `CLAUDE.md` המנוהל ארגונית והזיכרון האוטומטי |

אם ברצונכם להשאיר את `CLAUDE.local.md` בלי לוותר על `AGENTS.md`, הגדירו `claude-md-and-agents-md`. לא תהיה קריאה כפולה: אם `AGENTS.md` כבר נכלל באמצעות שורת `@AGENTS.md` או קישור סמלי, Claude Code לא יטען אותו פעם נוספת, ללא קשר להגדרה.

אפשר לבדוק אם הקובץ זוהה באמצעות הפקודה `/memory`: החל מגרסה 2.1.280, הנתיב ל-`AGENTS.md` מופיע ברשימה. בגרסאות שלפני 2.1.277 ובשיחות שבהן התוסף המובנה `agents-md` מושבת, Claude Code קורא רק את `CLAUDE.md`, ואין פריט Project instructions ב-`/config`. לפני גרסה 2.1.281, שיחות דרך Amazon Bedrock ושיחות שבהן הטלמטריה מושבתת התנהגו באותו אופן. גם בשיחה הראשונה אחרי עדכון מגרסה ישנה ייתכן ש-`AGENTS.md` לא יזוהה; הוא יפעל החל מהשיחה הבאה.

מה זה אומר להתקנה עם קובץ אחד? אם אין לכם כללים שמיועדים ל-Claude בלבד, אפשר לוותר על `CLAUDE.md`: `AGENTS.md` מספיק, ו-Claude Code,‏ Codex ו-Cursor יקראו אותו. אם יש לכם כללים כאלה (plan mode לספריות מסוכנות, skills, hooks), דרוש `CLAUDE.md`, ו-Claude Code יפסיק לקרוא את `AGENTS.md` בעצמו. במקרה כזה, כללו את `AGENTS.md` בתוך `CLAUDE.md` באמצעות השורה `@AGENTS.md`; ההגדרה הזאת פועלת בדיוק כמו לפני ספטמבר. היא עוזרת גם עם גרסאות ישנות יותר של Claude Code. אסביר זאת בפירוט בהמשך.

## איך מייבאים את <bdi>@AGENTS.md</bdi> לתוך CLAUDE.md?

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Key takeaway">

הנקודה המרכזית

נדרש ייבוא כשהפרויקט מכיל `CLAUDE.md`: כשקובץ כזה קיים, Claude Code אינו קורא את `AGENTS.md` בעצמו כברירת מחדל. כדי להגדיר זאת, כתבו את השורה `@AGENTS.md` בראש הקובץ `CLAUDE.md`. כש-Claude Code מתחיל שיחה, הוא מציב את תוכן `AGENTS.md` במקום השורה הזאת וקורא את התוצאה כטקסט אחד. מתחת לייבוא אפשר להוסיף סעיף „Claude Code” עם כללים שחלים רק על Claude. ייבוא פועל עם נתיבים יחסיים ומוחלטים, ואפשר לקנן אותו עד ארבע רמות עומק.

</div>

דוגמה מינימלית ופועלת מתוך התיעוד הרשמי:

```markdown
@AGENTS.md

## Claude Code

Use plan mode for changes under `src/billing/`.
```

כך זה עובד. השורה הראשונה, `@AGENTS.md`, היא הוראת ייבוא. כש-Claude Code מנתח את `CLAUDE.md` בתחילת שיחה, הוא מוצא את הייבוא ומציב במקומו את כל התוכן של `AGENTS.md`. אחר כך מופיעה הכותרת `## Claude Code`: זהו Markdown רגיל, אבל היא משמשת כסעיף „תוספות שמיועדות ל-Claude”. מתחתיה מופיע כלל שחל רק על Claude Code: להשתמש ב-plan mode לשינויים בספריית החיוב. Codex CLI או Cursor אינם פותחים את הקובץ הזה כלל; הם משתמשים ב-`AGENTS.md` הרגיל.

ציטוט מהתיעוד על אופן פעולת הייבוא:

<figure>
<blockquote>
<p>קובצי CLAUDE.md יכולים לייבא קבצים נוספים באמצעות התחביר <code><bdi>@path/to/import</bdi></code>. הקבצים המיובאים מורחבים ונטענים להקשר בתחילת השיחה, יחד עם קובץ CLAUDE.md שמפנה אליהם.</p>
</blockquote>
<figcaption>— Anthropic, https://code.claude.com/docs/en/memory</figcaption>
</figure>

כמה פרטים שימושיים:

- **נתיבים יחסיים ומוחלטים.** `@AGENTS.md` הוא נתיב יחסי לקובץ שמכיל את הייבוא. הנתיבים `@/Users/me/shared/rules.md` או `@~/.claude/personal.md` הם מוחלטים. אני משתמש ב-`@~/.claude/personal.md` להעדפות אישיות שאיני רוצה להכניס למאגר.
- **עומק של ארבעה שלבים.** `AGENTS.md` יכול לייבא את `@docs/coding-style.md`, והקובץ `coding-style.md` יכול לייבא קובץ נוסף, עד ארבע רמות. זה מספיק לכל מבנה מעשי.
- **גרשיים הפוכים חוסמים ייבוא.** אם הטקסט אומר `` `@README` ``, מדובר רק באזכור של השם, לא בייבוא. כך אפשר להסביר לקוראים איך ייבוא פועל בלי להפעיל אותו.
- **אישור לקבצים שמחוץ לפרויקט.** אם ייבוא מפנה מחוץ לספריית העבודה, כמו `@~/.claude/personal.md`, Claude Code מציג בפעם הראשונה תיבת דו-שיח עם רשימת הקבצים האלה. אם מסרבים, ייבוא חיצוני נשאר מושבת ותיבת הדו-שיח לא תוצג שוב. `@AGENTS.md` בשורש הפרויקט אינו גורם להצגת תיבת דו-שיח. כך נמנעת טעינה מקרית של קובץ לא קשור להקשר.

אחרי שעברתי להגדרה הזאת בפרויקט המתואר, `CLAUDE.md` התקצר מ-250 שורות ל-60:‏ `@AGENTS.md` ועוד חמישה עד שבעה כללים שחלים רק על Claude Code (plan mode לספריות מסוכנות, ממה להימנע באזור הניהול ואיך לנסח commits). כל מה שמשותף נמצא ב-`AGENTS.md`, שאותו Codex ו-Cursor קוראים.

## מתי לבחור בקישור סמלי ומתי בייבוא?

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Key takeaway">

הנקודה המרכזית

Anthropic מציעה שני מנגנונים: ייבוא באמצעות `@AGENTS.md` או קישור סמלי, `ln -s AGENTS.md CLAUDE.md`. קישור סמלי פשוט יותר — הוא רק כינוי ואינו דורש שינוי בקבצים. אבל יש לו שלושה חסרונות: ב-Windows נדרשות הרשאות מנהל, אי אפשר להוסיף כללים שמיועדים רק ל-Claude ל-`CLAUDE.md`, ולפעמים Git מציג קישור סמלי כזבל ב-diff. ייבוא הוא הגישה האוניברסלית. אם אין לכם כללים שמיועדים ל-Claude בלבד, אז החל מגרסה 2.1.277 אין צורך גם בזה וגם בזה: Claude Code יקרא את `AGENTS.md` בעצמו.

</div>

התיעוד מציג את אפשרות הקישור הסמלי כך:

```bash
ln -s AGENTS.md CLAUDE.md
```

ומיד מוסיף אזהרה מפורשת לגבי Windows:

<figure>
<blockquote>
<p>אם אתם או מישהו שמשכפל את המאגר עובדים ב-Windows, השתמשו בייבוא `@AGENTS.md`. יצירת קישור סמלי שם דורשת הרשאות מנהל או Developer Mode, ו-Git ללא `core.symlinks` מופעל משכפל קישור שנשמר ב-commit כקובץ טקסט רגיל, ומשאיר `CLAUDE.md` בן שורה אחת במקום ההנחיות בעותק הזה.</p>
</blockquote>
<figcaption>— Anthropic, https://code.claude.com/docs/en/memory</figcaption>
</figure>

טבלת השוואה:

| קריטריון | ייבוא `@AGENTS.md` | קישור סמלי `ln -s` |
|----|----|----|
| **פועל ב-Windows ללא הרשאות מנהל** | כן | לא (נדרש Developer Mode) |
| **אפשר להוסיף כללים שמיועדים רק ל-Claude** | כן, מתחת לייבוא | לא, הקובץ זהה |
| **מופיע ב-Git כ-Markdown רגיל** | כן | כקישור (תלוי ב-`core.symlinks`) |
| **אפשר לייבא כמה קבצים** | כן, עד ארבע רמות | לא, אחד לאחד |
| **שמירה במטמון/ביטול תוקף ב-Claude Code** | סטנדרטיים עבור CLAUDE.md | פועלים, אבל לקישורים סמליים יש מלכודות מטא-נתונים |
| **בחירת ברירת מחדל** | מתאים לכולם | רק אם שימוש חוצה פלטפורמות אינו חשוב |

אני משתמש בייבוא בפרויקט המתואר. הסיבות לכך:

1. **הצוות מעורב.** אני משתמש ב-Mac; בדוגמה, הצוות מתחלק בערך שווה בשווה בין משתמשי Windows ו-Mac. אם קישור סמלי מופיע במאגר, משתמשי Windows בלי Developer Mode יקבלו אותו כקובץ טקסט רגיל שמכיל שורה אחת, `AGENTS.md`. זה גורם לבאגים מוזרים: לפעמים הכללים פועלים ולפעמים לא, ולא ברור למה.
2. **אני רוצה כללים שמיועדים רק ל-Claude.** מתחת ל-`@AGENTS.md`, יש ב-`CLAUDE.md` שלי סעיף „Claude Code” עם כללים: להשתמש ב-`--effort high` למשימות ארכיטקטורה, להריץ `npm run build` לפני `git push`, ולא לקרוא ל-`/api/v1/deploy` ידנית. Codex אינו מבין את הפקודות האלה.
3. **קל יותר לנפות תקלות.** כשמשהו משתבש, אני פותח את `CLAUDE.md` ורואה את הייבוא ואת החריגות שלי. בקישור סמלי אין סימון „זה נוסף כאן”. למידע נוסף על ניפוי תקלות בהגדרות Claude Code, עיינו ב[מדריך למצב בטוח](https://ailoot.ai/blog/he/claude-code-safe-mode-recovery/).

אם אין לכם כללים שמיועדים ל-Claude בלבד, החל מגרסה 2.1.277 אין עוד צורך בקישור סמלי: מחקו את `CLAUDE.md`, ו-Claude Code יקרא את `AGENTS.md` בעצמו. השאירו את הקישור הסמלי רק אם מישהו בצוות משתמש בגרסה ישנה מ-2.1.277 ואינו יכול לעדכן. אם יש לכם כללים שמיועדים ל-Claude בלבד, ייבוא נוח יותר בתשעה מקרים מתוך עשרה.

## מה קוראים Codex,‏ Cursor,‏ Copilot,‏ Windsurf ו-Gemini CLI?

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Key takeaway">

הנקודה המרכזית

כל כלי קורא קובץ משלו, ולעיתים יותר מאחד. Claude Code קורא את `CLAUDE.md`, ומאז ספטמבר 2026 קורא גם את `AGENTS.md` אם אין בפרויקט `CLAUDE.md`. Codex CLI קורא את `AGENTS.md` וגם את `AGENTS.override.md`. Cursor קורא את הפורמט הישן `.cursorrules` או את הפורמט החדש `.cursor/rules/*.mdc`, ומאז קיץ 2026 קורא גם את `AGENTS.md`. Copilot קורא את `.github/copilot-instructions.md` או את `.github/instructions/*.instructions.md`. Windsurf קורא את `.windsurfrules` הישן או את `.windsurf/rules/` החדש. Gemini CLI קורא את `GEMINI.md`. ‏Aider ו-Cline כבר אימצו את `AGENTS.md`.

</div>

מפת שבעת הכלים המרכזיים (מבוססת על התיעוד הרשמי של כל כלי):

| כלי | קובץ ההנחיות הראשי | חלופות | קורא AGENTS.md? |
|----|----|----|----|
| **Claude Code** | `CLAUDE.md` | `~/.claude/CLAUDE.md`,‏ `./.claude/CLAUDE.md`, מדיניות מנוהלת | כן, אם אין בפרויקט `CLAUDE.md` (מאז 2.1.277), אחרת באמצעות ייבוא |
| **Codex CLI** (OpenAI) | `AGENTS.md` | `AGENTS.override.md` | כן (באופן מובנה) |
| **Cursor** | `.cursor/rules/*.mdc` | `.cursorrules` (הוצא משימוש) | כן |
| **GitHub Copilot** | `.github/copilot-instructions.md` | `.github/instructions/*.instructions.md` | באמצעות הרחבות |
| **Windsurf** | `.windsurf/rules/` | `.windsurfrules` (הוצא משימוש) | כן |
| **Gemini CLI** | `GEMINI.md` | \- | לא |
| **Aider, Cline, opencode** | `AGENTS.md` | \- | כן (באופן מובנה) |

מה נובע מכך? אם יש במאגר `AGENTS.md` (וגם `CLAUDE.md` עם ייבוא כשנחוצים כללים שמיועדים ל-Claude), חמישה מתוך שבעת הכלים מקבלים הוראות עדכניות באופן אוטומטי. אפשר להשאיר את Cursor ואת Windsurf, שיש להם קבצים מובנים משלהם, כפי שהם (`AGENTS.md` נקרא גם על ידם), או להוסיף ייבוא `@AGENTS.md` — אבל התחביר שלהם שונה ולא תמיד נתמך.

האסטרטגיה הפשוטה ביותר לפרויקט חדש:

1. **שימו את כל הכללים המשותפים ב-`AGENTS.md`** — 95% מהכללים שייכים לשם.
2. **צרו `CLAUDE.md` אם נחוצים כללים שמיועדים רק ל-Claude:** שימו בשורה הראשונה את `@AGENTS.md`, ואז הוסיפו סעיף עם כללים שמיועדים רק ל-Claude. אם אין כללים כאלה, אין צורך ב-`CLAUDE.md`; Claude Code קורא את `AGENTS.md` בעצמו מאז גרסה 2.1.277.
3. **השאירו את `.cursor/rules/` עבור Cursor** למקרים נדירים שבהם נחוץ משהו שמיועד ל-Cursor בלבד (הפקודות `@Codebase` ו-`@Docs` שלו).
4. **עשו אותו דבר עם Windsurf:** שכחו את `.windsurfrules` הישן; השתמשו ב-`.windsurf/rules/` החדש רק כשנחוצים דפוסים שמתאימים לתחביר שלו.

הגישה הזאת מספקת 80% מהתועלת ב-20% מהעבודה. מניסיוני, כשארגנתי צוותים מעורבים ב„אנטיגרביטי”, תחזוקה של יותר משני מקורות אמת (משותף ו-Claude בלבד) נעשית מכבידה. אם מישהו בצוות מוסיף כלל ל-`.cursorrules` ושוכח את `AGENTS.md`, כעבור שבוע Cursor ו-Codex לא יסכימו זה עם זה.

## איך <bdi>/init</bdi> ב-Claude Code קולט AGENTS.md קיים?

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Key takeaway">

הנקודה המרכזית

`/init` יוצר `CLAUDE.md` על סמך מה שכבר נמצא במאגר וחוסך 20–30 דקות של עבודה ידנית. כברירת מחדל, הוא קולט את כללי Cursor (`.cursor/rules/`,‏ `.cursorrules`) ואת כללי Copilot (`.github/copilot-instructions.md`), ואילו את `AGENTS.md`,‏ `.windsurfrules` ו-`.clinerules` הוא קורא במצב `CLAUDE_CODE_NEW_INIT=1`. אותו מצב מפעיל תהליך אינטראקטיבי מרובה שלבים: הוא שואל שאלות, בוחן את הקוד באמצעות תת-סוכן ומציע תוכנית לפני הכתיבה. מאז ספטמבר 2026 יש ל-`/init` חיסרון בפרויקט עם `AGENTS.md`: קובץ `CLAUDE.md` חדש מפסיק את הקריאה הישירה של `AGENTS.md`, והכללים מופיעים בשני קבצים.

</div>

Anthropic מתארת כך את `/init` בתיעוד שלה:

<figure>
<blockquote>
<p>הרצת <code><bdi>/init</bdi></code> קוראת קובצי הנחיות של כלים אחרים ומעבירה חלקים רלוונטיים אל <code>CLAUDE.md</code> שנוצר: כללי Cursor מתוך <code>.cursor/rules/</code> או <code>.cursorrules</code>, כללי Copilot מתוך <code>.github/copilot-instructions.md</code>, ובאמצעות <code>CLAUDE_CODE_NEW_INIT=1</code> גם את <code>AGENTS.md</code>,‏ <code>.devin/rules/</code>,‏ <code>.windsurf/rules/</code> או <code>.windsurfrules</code>, ואת <code>.clinerules</code>.</p>
</blockquote>
<figcaption>— Anthropic, https://code.claude.com/docs/en/memory</figcaption>
</figure>

מה המשמעות בפועל? במאגר שתיארתי היו `.cursorrules` מתקופת הניסיון שלי ב-Cursor (כ-80 שורות), ו-`AGENTS.md` (120 שורות, שהרכבתי ידנית). כשהרצתי `claude /init`, הפקודה לקחה את שני הקבצים, הסירה כללים דומים והרכיבה `CLAUDE.md` מסודר בתוך דקה. בדקתי אותו אחר כך וביצעתי עריכות קלות — הסרתי פריטים מיושנים והוספתי מבנה עם כותרות. זה היה מהיר יותר מכתיבה מחדש מאפס.

המצב האינטראקטיבי, שבו `/init` קורא גם את `AGENTS.md`, מופעל באמצעות משתנה סביבה:

```bash
CLAUDE_CODE_NEW_INIT=1 claude
```

לאחר הפעלת `/init`, Claude שואל סדרת שאלות הבהרה: אילו פריטים להגדיר (`CLAUDE.md`,‏ skills,‏ hooks), באיזו מחסנית משתמש הפרויקט ואילו פקודות להריץ לבדיקות. אחר כך תת-סוכן בוחן את בסיס הקוד — קורא את `package.json`,‏ `README.md` וקובצי הגדרות — ומשלים את החלקים החסרים. בסוף הוא מציג הצעה שאפשר לערוך לפני השמירה. למידע נוסף על הגדרת Claude Code בתחילת פרויקט, עיינו ב[מדריך נפרד](https://ailoot.ai/blog/he/spec-kit-claude-code-spec-driven-development/).

ועכשיו החיסרון. אם בפרויקט כבר יש `AGENTS.md` פעיל, `/init` ייצור לצדו `CLAUDE.md` שיכיל עותק של הכללים שבו. מאותו רגע Claude Code קורא כברירת מחדל רק את `CLAUDE.md`, ולכן יש שוב שני מקורות אמת: אתם מעדכנים את `AGENTS.md`, בעוד Claude ממשיך לפעול לפי העותק הישן. הפקודה `/import` עושה דבר דומה: היא מוסיפה ל-`CLAUDE.md` עותק חד-פעמי של `AGENTS.md`. כדי לשמור על מקור אמת אחד, שימו את הייבוא `@AGENTS.md` בשורה הראשונה של `CLAUDE.md` אחרי `/init`, והסירו מ-`CLAUDE.md` כל דבר שחוזר על `AGENTS.md`.

`/init` היא נקודת פתיחה מתאימה לפרויקט חדש או לפרויקט שמעבירים מ-Cursor או Copilot. אין צורך לחפש ברשת „תבנית CLAUDE.md הטובה ביותר” — Anthropic כבר מתחשבת בתוכן המאגר. אם בפרויקט כבר יש `AGENTS.md` פעיל ואין כללים שמיועדים ל-Claude בלבד, אין צורך ב-`/init`: Claude Code יקרא את `AGENTS.md` בעצמו.

## איך מפרידים בין הנחיות משותפות להנחיות שמיועדות ל-Claude?

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Key takeaway">

הנקודה המרכזית

שימו ב-`AGENTS.md` כללים שכל סוכן AI יכול להבין: במה אסור לגעת, איך לתת שמות לענפים, ש-`.env` מכיל סוד, ואילו פקודות להריץ לבדיקות. שימו ב-`CLAUDE.md` (מתחת לייבוא) כללים שמיועדים ל-Claude Code: plan mode,‏ skills,‏ hooks, הפניות ל-skills ושמות מודלים לפי גרסה. ההבחנה פשוטה: אם כלל מתחיל ב„Claude צריך”, מקומו ב-`CLAUDE.md`. אם הוא מתחיל ב„הכלי צריך”, מקומו ב-`AGENTS.md`.

</div>

אני מפריד ביניהם לפי העיקרון הזה. כללים משותפים שנכנסים ל-`AGENTS.md`:

- **במה אסור לגעת בקוד.** התיקיות `.env`,‏ `node_modules`,‏ `prisma/migrations` (רק באמצעות `prisma migrate`),‏ `.next/`,‏ `.git/`.
- **איך לתת שמות לדברים.** ענפים: `feat/`,‏ `fix/`,‏ `chore/`. Commits: הקידומות `feat:`,‏ `fix:`,‏ `docs:` בתוספת תיאור קצר. שמות קובצי רכיבים ב-`kebab-case`.
- **פקודות בדיקה ו-lint.** `npm run build`,‏ `npm run lint`,‏ `npm test`. איזו פקודה להריץ לפני `git push`.
- **עקרונות ארכיטקטוניים.** מה נכנס ל-`src/lib/`, מה ל-`src/components/`, היכן נמצאת הלוגיקה העסקית והיכן ממשק המשתמש.
- **אבטחה.** לעולם אל תכללו סודות ב-commit. גשו למסד הנתונים של הייצור רק דרך `prod-psql`. גשו לייצור דרך SSH רק באמצעות הכינוי `prod`, ולא באמצעות `root@IP`.

כללים שמיועדים ל-Claude בלבד ונכנסים ל-`CLAUDE.md` (מתחת ל-`@AGENTS.md`):

- **Plan mode.** השתמשו ב-`plan mode` לשינויים בספריות מסוכנות (למשל `src/billing/`).
- **רמת מאמץ.** השתמשו ב-`--effort high` למשימות ארכיטקטורה וב-`medium` לעבודה שגרתית.
- **Skills.** באילו סוכני AI וכישורים להשתמש בכל מצב. לדוגמה: „כשעובדים על מדריך, הפעילו את ה-skill `build-masterskaya-guide`.”
- **הזיכרון של Claude.** מה לשים בזיכרון האוטומטי ומה לשים ב-`CLAUDE.local.md`. למידע נוסף על הזיכרון של Claude, עיינו ב[מדריך לזיכרון ול-CLAUDE.md](https://ailoot.ai/blog/he/claude-memory-claude-md-auto-memory/).
- **Hooks.** אם מוגדרים hooks ב-`.claude/settings.json`, תארו ב-`CLAUDE.md` מה הם עושים (Codex ו-Cursor אינם מכירים אותם, וגם אינם צריכים להכיר אותם).
- **Skills ופקודות.** רשימת פקודות הלוכסן שבהן אני משתמש לעיתים קרובות (`/init`,‏ `/cd`,‏ `/memory`,‏ `/plan`).

הגבול לא תמיד ברור. למשל, „לעולם אל תריצו `git push --force` אל `main`” הוא בבירור כלל משותף, ולכן מקומו ב-`AGENTS.md`. אבל „לפני הרצת `git push` לענף פעיל, השתמשו קודם ב-plan mode” הוא כלל שמיועד ל-Claude Code בלבד, ולכן מקומו ב-`CLAUDE.md`. המבחן: „אם הייתי מסיר מחר את Claude Code ומשאיר רק את Codex, האם הכלל הזה עדיין היה חל?” אם כן, שימו אותו ב-`AGENTS.md`. אם לא, שימו אותו ב-`CLAUDE.md`.

## מה שייך ל-AGENTS.md ומה שייך ל-CLAUDE.md או ל-.claude/rules?

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Key takeaway">

הנקודה המרכזית

בפרויקט גדול, `AGENTS.md` אחד אינו מספיק — הוא גדל יתר על המידה, וכל סוכן מכניס להקשר שלו חומר מיותר. הפתרון הוא ספריית `.claude/rules/` עם קבצים נפרדים לפי נושא, ו-YAML frontmatter עם `paths:` שמגדיר הפעלה לפי נתיב. לדוגמה, כלל API חל רק כש-Claude עובד ב-`src/api/`. כך חוסכים הרבה מקום בחלון ההקשר. המקבילות עבור Cursor ו-Windsurf הן `.cursor/rules/` ו-`.windsurf/rules/`.

</div>

אם הכללים עולים על 200 שורות, הגיע הזמן לפצל אותם. התיעוד של Anthropic ממליץ לכוון ל-200 שורות בכל קובץ, כי קובצי `CLAUDE.md` ארוכים גורמים לירידה שקטה בעקביות הציות להנחיות: נדמה ש-Claude קורא אותם, אך הוא פועל לפיהם פחות פעמים.

מבנה לפרויקט גדול שעובד בשבילי:

```
my-project/
├── AGENTS.md                    # 100-150 lines, shared
├── CLAUDE.md                    # 30-50 lines: @AGENTS.md + Claude-only
└── .claude/
    ├── CLAUDE.md                # alternative to root file, same file
    └── rules/
        ├── api.md               # with paths: ['src/api/**']
        ├── components.md        # with paths: ['src/components/**']
        ├── testing.md           # without paths, always active
        └── security.md          # without paths, always active
```

כל קובץ ב-`.claude/rules/` יכול להכיל frontmatter:

```markdown
---
paths:
  - "src/api/**/*.ts"
---

# API rules
- Every endpoint validates input with zod
- Errors use the standard `{error, code}` format
- OpenAPI comments are required
```

Claude טוען את הכללים האלה רק כשעובדים עם קבצים שתואמים לתבנית הזאת. אם הוא נוגע ב-`src/components/Button.tsx`, כללי ה-API לא מתווספים להקשר. כך חלון ההקשר משמש רק למה שרלוונטי. ספריית `.claude/rules/` פועלת גם ללא `CLAUDE.md`: אם בפרויקט יש רק `AGENTS.md`, הכללים נטענים לצדו ואינם מבטלים את הקריאה הישירה של `AGENTS.md`.

Cursor ו-Windsurf תומכים באותה גישה באמצעות הספריות `.cursor/rules/` ו-`.windsurf/rules/`. תקן AGENTS.md יכול להפנות לספריות האלה, אבל התחביר החוצה-כלים עדיין אינו יציב לגמרי. בטוח יותר להשאיר את הכללים המשותפים ב-`AGENTS.md` ולהעתיק כללים לפי נתיב אל `.claude/rules/` ו-`.cursor/rules/` — אלה מקרים ספציפיים נדירים, ולא עיקר הכללים.

מיקומים שימושיים עבור CLAUDE.md (מהרחב ביותר לצר ביותר):

| רמה | מיקום | מטרה |
|----|----|----|
| **מדיניות מנוהלת** | `/Library/Application Support/ClaudeCode/CLAUDE.md` (Mac),‏ `/etc/claude-code/CLAUDE.md` (Linux) | כללים ארגוניים, IT/DevOps |
| **משתמש** | `~/.claude/CLAUDE.md` | העדפות אישיות בכל הפרויקטים |
| **פרויקט** | `./CLAUDE.md` או `./.claude/CLAUDE.md` | כללי צוות הפרויקט |
| **מקומי** | `./CLAUDE.local.md` (ב-`.gitignore`) | העדפות אישיות לפרויקט מסוים |

דוגמה ל-`~/.claude/CLAUDE.md` עשויה לכלול שני כללים: „השיבו בשפה המועדפת על המשתמש” ו„כתבו Ailoot בדיוק כך”. הכללים האלה חלים על כל פרויקט, ולכן אין צורך לשכפל אותם בכל מאגר.

מבין ארבע הרמות האלה, רק `CLAUDE.md` ברמת הפרויקט ו-`CLAUDE.local.md` מבטלים את הקריאה הישירה של `AGENTS.md`. קובץ `~/.claude/CLAUDE.md` אישי ומדיניות מנוהלת אינם מפריעים; Claude Code קורא אותם לצד `AGENTS.md`.

## מה לעשות אם AGENTS.md בפרויקט כבר מיושן?

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Key takeaway">

הנקודה המרכזית

אם `AGENTS.md` הורכב ב-2025 עבור Codex או Aider ולא נערך מאז, פתחו את הפרויקט ב-Claude Code ובקשו מ-Claude לערוך את הקובץ. AGENTS.md הוא מסמך חי; המפרט של Linux Foundation מתעדכן. הכלל המרכזי לשמירה על עדכניות: כל כלל חייב לענות על השאלה „על מה נמאס לי לחזור בפני Claude/Codex?” אם הוא לא עונה עליה, העבירו אותו לארכיון.

</div>

בפרויקט שתיארתי היה לי `AGENTS.md` ממאי 2025 — 180 שורות, רבות מהן מיושנות (הוא הזכיר נקודות קצה של Anthropic API שהשתנו מאז; דוגמאות עם התחביר `claude --tools` שכבר אינו קיים; וכללים על `~/.claude/projects/` עם מבנה מיושן).

התוכנית שבה השתמשתי לעדכון:

1. **עברו עליו עם `claude` ב-plan mode.** אני פותח את המאגר, מריץ `claude --safe-mode` ומבקש: “Reread `AGENTS.md` and suggest a list of items that are outdated or repeated. Don’t edit it; list them only.” בתוך שתי דקות קיבלתי רשימה של 23 פריטים לבדיקה.
2. **הסירו פריטים שברור שהתיישנו.** מתוך 23 הפריטים, 9 היו מיושנים בבירור — תחביר פקודות, נקודות קצה ושמות דגלים. מחקתי את השורות האלה.
3. **אחדו כפילויות.** עוד 6 פריטים חזרו על עצמם בניסוחים שונים („אל תדחוף בכוח”, „לעולם אל תשתמש ב-`--force`”, „הימנע מ-`git push -f`”). איחדתי אותם לשורה אחת.
4. **הוסיפו פריטים חדשים.** הוספתי דברים ששמתי לב ש-Claude/Codex טועים בהם בקביעות בחודש האחרון, לפי הכלל „שורה אחת לכל דפוס שגיאה”. התוצאה הייתה 8 פריטים חדשים.
5. **הריצו תת-סוכן לבדיקה סופית.** ביקשתי מ-Claude לבדוק ולחפש סתירות, עמימויות וכפילויות. הוא מצא שלושה ניסוחים שאפשר להבהיר. תיקנתי אותם.

כעבור שעה, `AGENTS.md` מנה 110 שורות, היה מעודכן, והכרתי כל שורה בו באופן אישי. היה קל לבנות ממנו `CLAUDE.md` בן 30 שורות. Codex גם נעשה זהיר יותר באופן ניכר בבדיקות אחר כך — אני חושד שחלק מההחלטות ה„מוזרות” שלו נבעו מכללים מיושנים שפעל לפיהם בתום לב.

העקרונות המרכזיים למסמך `AGENTS.md` חי:

- **כל כלל עונה על טעות שחוזרת על עצמה.** אם כלל לא עלה בדעתי אפילו פעם אחת במהלך החודש, אין טעם להשאיר אותו.
- **נסחו כללים כפקודות, לא כתיאוריה.** „השתמשו בשני רווחים” הוא כלל. „הקפידו על סגנון קוד מסודר” אינו כלל.
- **פרטים עדיפים על הכללות.** „הריצו `npm run build` לפני `git push`” הוא כלל. „בדקו את השינויים” אינו כלל.

## מה בוודאות לא עובד בהגדרה הזאת?

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Key takeaway">

הנקודה המרכזית

ייבוא `@AGENTS.md` אינו גורם לכלים שונים להתנהג כאחד. לכל כלי יש מוזרויות משלו: Codex CLI אינו מכיר את `.claude/rules/` או את hooks. ל-Cursor יש מנוע השלמה אוטומטית משלו, שאינו קורא את CLAUDE.md בזמן השלמת טקסט. Copilot פועל לפי `.github/copilot-instructions.md`, וכללים ב-AGENTS.md בלבד אינם מספיקים עבורו. זה לא „קובץ אחד = התנהגות אחת”; זה „מקור אחד לכללי הבסיס, ואז לכל כלי יש תוספות משלו”.

</div>

כמה דברים שלמדתי בדרך הקשה במשך שישה חודשים של עבודה עם ההגדרה הזאת:

**1. השלמה אוטומטית של Cursor אינה משתמשת ב-AGENTS.md.** כש-Cursor מציע להשלים שורה בעורך, הוא אינו קורא את `AGENTS.md` בזמן אמת — פועל שם מנוע מהיר נפרד. כללים ב-AGENTS.md חשובים רק כששולחים בקשת צ'אט בתוך Cursor. כלומר, כתיבה של „אל תשתמשו ב-`var`, השתמשו ב-`const`” ב-AGENTS.md לא תשפיע על ההשלמה האוטומטית; צריך להגדיר זאת דרך ESLint או הגדרות TypeScript.

**2. Hooks של Claude Code בתוך AGENTS.md אינם פועלים עבור Codex.** אם מוגדר hook מסוג PreToolUse ב-`.claude/settings.json` כדי לחסום פעולה מסוימת, המידע הזה שימושי רק ל-Claude. Codex אינו מכיר hooks; מבחינתו, „הכלי מחליט בעצמו”. הגיוני לכתוב „אל תעשו X” ב-`AGENTS.md`, ואת „יש hook שחוסם את X פיזית” ב-`CLAUDE.md`, מתחת לייבוא.

**3. Copilot ו-`.github/copilot-instructions.md`.** ‏GitHub Copilot קורא את הקובץ שלו, ועדיין לא קורא את AGENTS.md היטב. אם הצוות שלכם משתמש ב-Copilot באופן פעיל, הוסיפו קובץ `.github/copilot-instructions.md` נפרד ובו גרסה מקוצרת של הכללים, או השתמשו ב-[Copilot Extensions](https://github.com/marketplace?type=apps&category=copilot-extensions) שמכירות את AGENTS.md. הדברים משתנים במהירות, ולכן התמונה עשויה להיות שונה בעוד שלושה עד שישה חודשים.

**4. Git אינו עוקב אחר קישור סמלי כשינוי ב-CLAUDE.md.** אם מריצים `ln -s AGENTS.md CLAUDE.md` ומעדכנים את `AGENTS.md` כעבור שבוע, Git יציג diff רק עבור `AGENTS.md`. זה תקין, אבל עמית שבודק את ה-PR עלול לא להבין שגם `CLAUDE.md` עודכן (באמצעות הקישור הסמלי). הפתרון: כתבו במפורש בתיאור ה-PR: „עודכן `AGENTS.md`; Claude Code רואה את אותו הקובץ דרך הקישור הסמלי.”

**5. קשה לנפות תקלות בייבוא עמוק.** אם `AGENTS.md` מייבא את `@docs/coding-style.md`, שמייבא את `@docs/typescript.md`, וכלל כלשהו מתנגש בכלל אחר, קשה לנפות את התקלה. אני מגביל את הייבוא לרמה אחת (`CLAUDE.md` → `AGENTS.md`) ואיני מקנן מעבר לכך. Anthropic מספקת hook בשם `InstructionsLoaded` שמתעד אילו קבצים נטענו — שימושי לניפוי תקלות בהגדרות שכבתיות. הערה: ה-hook מופעל עבור `AGENTS.md` שנכלל באמצעות ייבוא או קישור סמלי, אך לא עבור `AGENTS.md` ש-Claude Code קרא בעצמו.

<div class="section" role="doc-bibliography" aria-label="Sources">

### מקורות

- [תיעוד הזיכרון של Claude Code — הסעיף על AGENTS.md](https://code.claude.com/docs/en/memory#agents-md) — מתי Claude Code קורא את AGENTS.md בעצמו, הגדרות Project instructions, ייבוא וקישורים סמליים, והתנהגות `/init`.
- [תיעוד הזיכרון של Claude Code — ייבוא קבצים נוספים](https://code.claude.com/docs/en/memory#import-additional-files) — תחביר `@path/to/file`, עומק של ארבע רמות, נתיבים יחסיים ומוחלטים.
- [agents.md — תקן Linux Foundation](https://agents.md/) — התקן הרשמי של AGENTS.md ורשימת הכלים שתומכים בו.
- [תיעוד Cursor Rules](https://docs.cursor.com/context/rules-for-ai) — מה Cursor קורא (`.cursor/rules/*.mdc`,‏ AGENTS.md).
- [הנחיות מותאמות אישית ל-GitHub Copilot](https://docs.github.com/en/copilot/customizing-copilot/adding-custom-instructions-for-github-copilot) — הפורמט של `.github/copilot-instructions.md`.
- [מפרט AGENTS.md של Linux Foundation](https://aaif.io/projects/agents-md/) — מפרט מתעדכן.

</div>

הגדרת vibe-coding מלאה לערב: **שכפול AI + מוח שני + הנדסת הקשר**. 



הכירו את [Ailoot](https://ailoot.ai/).

## שאלות ותשובות: קובץ הנחיות אחד עבור Claude Code, Codex ו-Cursor בשנת 2026

### מתי עדיף ייבוא על קישור סמלי?

השתמשו ב-@AGENTS.md בתוך CLAUDE.md כשדרושות תוספות ייעודיות ל-Claude או כשחברי הצוות משתמשים ב-Windows. קישור סמלי מפנה את שני השמות לאותו תוכן ולכן אינו יכול להכיל סעיף נפרד ל-Claude בלבד.

### איך מוודאים שההנחיות המשותפות נטענו?

הריצו /memory ובדקו את רשימת קובצי ההנחיות. אם CLAUDE.md או CLAUDE.local.md מונעים טעינה ישירה של AGENTS.md בהגדרות שלכם, הוסיפו ייבוא או בחרו הגדרה שטוענת את שניהם, ואז פתחו מפגש חדש.


## Ailoot · החברה ופורטפוליו הפרויקטים שלה

Ailoot נשענת על ניסיון תפעולי מצטבר, בסיס לקוחות רחב, שירות יציב ובקרה שוטפת של KPI.

החברה ופורטפוליו הפרויקטים שלה: מיליוני לקוחות; מכירות בהיקף של מיליארדים מדי חודש.

Ailoot משתמשת בניסיון התפעולי הזה כדי לספק גישת API ליכולות AI במוצרי לקוחות, בסוכנים, באפליקציות ובאוטומציות.
