- קובץ
copilot-instructions.mdמותאם אישית לפרויקט שלך - 3 קבצי
.instructions.mdעםapplyToלסוגי קבצים שונים - קובץ
AGENTS.mdלתאימות צולבת עם כלי AI מרובים - תבנית הנחיות ארגונית מוכנה ליישום
- טבלת החלטה: מתי להשתמש בכל סוג הנחיה ובאיזו רמה
- ספריית הנחיות ניתנות לשימוש חוזר — 3 תבניות לשפות שונות
- תוכלו ליצור
copilot-instructions.mdברמת פרויקט ולראות שיפור מיידי באיכות הפלט של Copilot - תוכלו לכתוב קבצי
.instructions.mdעםapplyToשמטרגטים קבצים ספציפיים לפי glob pattern - תוכלו להגדיר הנחיות ברמת ארגון ולנהל סדר עדיפויות בין שלוש רמות ההנחיות
- תוכלו לבנות ספריית הנחיות ניתנות לשימוש חוזר שעובדת גם עם Claude Code וכלים אחרים
| פרקים נדרשים | פרק 1 — Agent Mode (הבנת הלולאה האגנטית, מצבי עבודה ורמות אישור) |
| חשבונות וכלים | VS Code עם GitHub Copilot מותקן ומורשה, חשבון GitHub (Free/Pro/Business/Enterprise), פרויקט קוד קיים (TypeScript/Python/React מומלץ) |
| זמן משוער | 35 דקות קריאה + 60 דקות תרגולים = כ-1.5 שעות |
בפרק 1 הבנתם איך Agent Mode עובד — הלולאה האגנטית, מצבי העבודה ורמות האישור. בפרק הזה תבנו מערכת הנחיות מדורגת שאומרת ל-Copilot איך לכתוב קוד בפרויקט שלכם — ותראו את ההבדל באיכות הפלט. בפרק 5 תרחיבו את היכולות של Copilot עם MCP Servers — כלים חיצוניים שמוסיפים יכולות שלא קיימות מובנית.
| מונח (אנגלית) | תרגום לעברית | הגדרה |
|---|---|---|
| copilot-instructions.md | קובץ הנחיות ראשי | קובץ Markdown בתיקיית .github/ שמגדיר הנחיות Copilot לכל הפרויקט |
| .instructions.md | קובץ הנחיות ממוקד | קבצי הנחיות עם YAML frontmatter שמטרגטים קבצים ספציפיים לפי glob pattern |
| applyTo | מטרגט / חל על | שדה ב-YAML frontmatter שמגדיר על אילו קבצים ההנחיה חלה (למשל **/*.ts) |
| YAML frontmatter | כותרת מטא-דאטה | בלוק --- בתחילת קובץ Markdown שמכיל מטא-דאטה מובנה |
| AGENTS.md | הנחיות לסוכנים | קובץ הנחיות צולב-כלים שמזוהה על ידי Copilot, Claude Code וסוכנים נוספים |
| CLAUDE.md | הנחיות ל-Claude | קובץ הנחיות ספציפי ל-Claude Code שנטען גם ב-VS Code Copilot |
| excludeAgent | החרגת סוכן | שדה ב-frontmatter שמסנן הנחיות מסוכן ספציפי כמו code-review או coding-agent |
| instruction inheritance | ירושת הנחיות | המנגנון שבו הנחיות מרמות שונות (אישי, פרויקט, ארגון) מתמזגות יחד |
| organization instructions | הנחיות ארגוניות | הנחיות ברמת ארגון GitHub שחלות על כל הריפוזיטוריז של הארגון |
למה הנחיות משנות הכל — הפער בין Copilot גנרי לבין Copilot שמכיר את הפרויקט
נסו לדמיין את התרחיש הבא: מפתח/ת חדש/ה מצטרף/ת לצוות שלכם. ביום הראשון, בלי לקרוא שורה אחת מה-README, בלי לדעת מה ה-coding conventions של הפרויקט, בלי להכיר את מבנה התיקיות ואת הכלים שבשימוש — הוא/היא מתחיל/ה לכתוב קוד. מה תקבלו? קוד שעובד, אולי, אבל בטוח לא קוד שמתאים לפרויקט שלכם. הוא ישתמש בשפה אחרת, בכלים אחרים, בסגנון אחר.
זה בדיוק מה ש-Copilot עושה כשאין לו הנחיות. הוא חכם מאוד, הוא יודע לכתוב קוד איכותי, אבל הוא פשוט לא יודע מה ההעדפות הספציפיות של הפרויקט שלכם. הוא לא יודע שאתם משתמשים ב-camelCase ולא ב-snake_case. הוא לא יודע שצריך לכתוב טסטים ב-Vitest ולא ב-Jest. הוא לא יודע שיש לכם Design System ספציפי עם Tailwind CSS ו-shadcn/ui. הוא לא יודע שאתם עובדים עם Fastify ולא עם Express, או ש-ORM שלכם הוא Prisma ולא TypeORM.
Custom Instructions (הנחיות מותאמות) פותרות את הבעיה הזו מהיסוד. במקום להגיד ל-Copilot בכל פרומפט מחדש "אל תשכח להשתמש ב-TypeScript strict mode" או "תמיד תכתוב error handling" — אתם כותבים את זה פעם אחת בקובץ Markdown, ו-Copilot קורא את זה אוטומטית בכל אינטראקציה. כל שיחת צ'אט, כל סשן של Agent Mode, כל Code Review — ההנחיות שם, בלי שתצטרכו לזכור אותן.
ההנחיות של Copilot עובדות בשלוש רמות — אישי, פרויקט וארגון — ומתמזגות יחד למערכת אחת שלמה. בפרק הזה נבנה את כל שלוש הרמות, נלמד איזה קובץ שמים איפה, ונראה בדיוק איך ההנחיות משפרות את הפלט.
כדי להמחיש את ההבדל, הנה ניסוי פשוט: ניקח פרומפט אחד — "Create a new API endpoint for user registration" — ונריץ אותו פעמיים. פעם ראשונה בפרויקט ללא הנחיות, ופעם שנייה באותו פרויקט עם קובץ הנחיות של 15 שורות. ההבדל מדהים:
- בלי הנחיות: Copilot בחר Express (לא Fastify כמו בפרויקט), JavaScript רגיל (לא TypeScript), בלי validation, בלי error handling, ובלי קשר למבנה הקבצים הקיים
- עם הנחיות: Copilot השתמש ב-Fastify, TypeScript strict, Zod validation, try/catch עם AppError, ושם את הקובץ בדיוק בתיקייה הנכונה לפי המבנה שהגדרנו
זה ההבדל בין כלי AI גנרי לבין כלי AI שמכיר את הפרויקט שלכם. ו-15 שורות של הנחיות הן כל מה שנדרש כדי לעשות את הקפיצה הזו.
פתחו את VS Code בפרויקט קיים. הפעילו Agent Mode ושלחו את הפרומפט: "Create a new API endpoint for user registration". שמרו את התוצאה — בהמשך הפרק נשווה אותה לתוצאה אחרי הוספת הנחיות.
copilot-instructions.md — הקובץ הראשי שכל פרויקט צריך
הקובץ copilot-instructions.md הוא נקודת ההתחלה — הקובץ הראשון שכל מפתח צריך ליצור כשמתחילים לעבוד עם Custom Instructions. הוא יושב בנתיב .github/copilot-instructions.md בשורש הריפוזיטורי, ו-Copilot קורא אותו אוטומטית בכל שיחת צ'אט ובכל סשן של Agent Mode. אין צורך להפעיל שום הגדרה — אם הקובץ קיים במיקום הנכון, Copilot מזהה אותו.
חישבו על הקובץ הזה כעל README פנימי שנכתב במיוחד ל-Copilot. הוא מכיל את הדברים שמתכנת חדש צריך לדעת כדי לכתוב קוד שמתאים לפרויקט:
| מה לכלול | דוגמה | למה זה חשוב |
|---|---|---|
| תיאור הפרויקט | "This is a B2B SaaS for logistics" | Copilot מבין את הקונטקסט העסקי |
| Tech Stack | "TypeScript, Fastify, Prisma, React" | לא ייצר קוד ב-Express אם אתם ב-Fastify |
| Conventions | "Use camelCase, Zod for validation" | עקביות בסגנון קוד |
| Build/Test | "Run tests with vitest, build with tsup" | Agent Mode יודע איך להריץ ולבדוק |
| Error Handling | "Always use try/catch with custom errors" | לא ישכח error handling |
| קבצים חשובים | "Config in src/config/, routes in src/routes/" | יודע איפה לשים דברים חדשים |
איפה בדיוק שמים את הקובץ
המיקום המדויק הוא קריטי — טעות של אות אחת בנתיב ו-Copilot לא ימצא את הקובץ:
- נתיב מלא:
PROJECT_ROOT/.github/copilot-instructions.md - תיקייה:
.github/(עם נקודה בהתחלה — תיקייה נסתרת) - שם הקובץ: בדיוק
copilot-instructions.md(עם מקף, לא קו תחתון)
אם התיקייה .github/ כבר קיימת בפרויקט (למשל, בגלל GitHub Actions), פשוט הוסיפו את הקובץ לתוכה. אם לא, צרו אותה:
mkdir -p .github
touch .github/copilot-instructions.md
מבנה קובץ מומלץ
הנה דוגמה לקובץ .github/copilot-instructions.md לפרויקט TypeScript/React:
# Project: TaskFlow — B2B Task Management SaaS
## Tech Stack
- Frontend: React 19 + TypeScript + Vite
- Backend: Fastify + TypeScript + Prisma ORM
- Testing: Vitest for unit, Playwright for E2E
- Styling: Tailwind CSS with custom design tokens
## Coding Conventions
- Use TypeScript strict mode — no `any` types
- Use Zod for all input validation
- Prefer named exports over default exports
- Use arrow functions for components, regular functions for utilities
- Error handling: always use try/catch with AppError class
## File Structure
- Components: src/components/{feature}/{ComponentName}.tsx
- API routes: src/routes/{resource}.routes.ts
- Database: prisma/schema.prisma + src/db/
## Build & Test
- Dev: `pnpm dev`
- Test: `pnpm test` (vitest) or `pnpm test:e2e` (playwright)
- Lint: `pnpm lint` (ESLint + Prettier)
- Build: `pnpm build` (tsup for backend, vite for frontend)
שימו לב לכמה עקרונות בדוגמה:
- קצר וממוקד — כל הנחיה היא משפט אחד ברור. אין פסקאות ארוכות, אין הסברים מיותרים
- ספציפי — לא "use good practices" אלא "use Zod for validation". ככל שההנחיה ספציפית יותר, כך Copilot מיישם אותה טוב יותר
- bullet points — קל לסרוק, קל ל-Copilot לעבד. הנחיות בתבליטים (bullets) מעובדות טוב יותר מטקסט רצוף
- אנגלית טכנית — Copilot עובד טוב יותר עם הנחיות באנגלית. כתבו את ההנחיות באנגלית גם אם הקוד שלכם בפרויקט ישראלי
- הכל ב-repository — הקובץ נמצא ב-Git, כל הצוות מקבל אותו אוטומטית אחרי
git pull
מה לא לכתוב בקובץ הנחיות
חשוב באותה מידה לדעת מה לא לשים בקובץ:
- לא secrets או API keys — הקובץ ב-Git, כולם רואים אותו. השתמשו ב-environment variables
- לא הסברים ארוכים — Copilot לא צריך לדעת למה בחרתם ב-Fastify, רק שאתם משתמשים ב-Fastify
- לא כללים שמשתנים תכופות — אם feature flag משתנה כל שבוע, לא שמים אותו בהנחיות
- לא הנחיות לשפת תשובה — "Answer in Hebrew" הוא כלל אישי, לא ברמת פרויקט. שימו אותו בהנחיות האישיות
לפי מחקר של GitHub על awesome-copilot (2026), קבצי הנחיות אפקטיביים מכילים בממוצע 15-30 כללים ב-50-200 שורות. מעבר ל-200 שורות, ההשפעה מתחילה לרדת. קבצים עם למעלה מ-1,000 שורות מראים ירידה מדידה באיכות הפלט.
אחת הטעויות הנפוצות ביותר היא לכתוב קובץ הנחיות ענק עם עשרות כללים. Copilot עובד טוב יותר עם הנחיות ממוקדות. כלל אצבע: שמרו על פחות מ-1,000 שורות לכל קובץ הנחיות. אם יש לכם יותר — פצלו לקבצי .instructions.md ממוקדים (נלמד בסעיף הבא). ובמקרה של Code Review, המגבלה חמורה אף יותר: רק 4,000 התווים הראשונים נקראים.
למה זה קורה: נדמה שככל שנוסיף יותר כללים, Copilot ייתן פלט טוב יותר. בפועל, הנחיות ארוכות מדי מדללות את ההשפעה ועלולות ליצור סתירות פנימיות.
מה לעשות במקום: התחילו עם 10-15 כללים קריטיים. הוסיפו כללים חדשים רק כשאתם רואים ש-Copilot מייצר משהו לא רצוי שחוזר על עצמו.
צרו את הקובץ .github/copilot-instructions.md בפרויקט שלכם. כתבו בו 5 כללים בסיסיים: (1) תיאור הפרויקט, (2) tech stack, (3) כלל naming convention אחד, (4) פקודת test, (5) כלל error handling אחד.
עכשיו שלחו בדיוק את אותו פרומפט מה-Do-Now הראשון: "Create a new API endpoint for user registration". השוו את התוצאה — האם Copilot השתמש ב-tech stack הנכון? האם יש error handling? כתבו לעצמכם את ההבדלים שזיהיתם: ___
זמן: 20 דקות | תוצר: קובץ .github/copilot-instructions.md מותאם אישית
- פתחו את הפרויקט הראשי שלכם ב-VS Code
- צרו את התיקייה
.github/אם היא לא קיימת:mkdir -p .github - צרו קובץ
copilot-instructions.mdבתוך.github/ - כתבו את הסעיפים הבאים:
- Project Overview — משפט אחד שמתאר מה האפליקציה עושה
- Tech Stack — כל הטכנולוגיות עם גרסאות
- Coding Conventions — לפחות 5 כללים (naming, imports, error handling, types, testing)
- File Structure — איפה שמים components, routes, utils
- Build & Test — פקודות הרצה, בדיקה, build
- בדקו שהקובץ עובד: שלחו ל-Copilot Chat את הפרומפט
"What are the project conventions?"— הוא צריך לצטט מההנחיות שלכם - Commit את הקובץ לריפוזיטורי כדי שכל חברי הצוות ייהנו מההנחיות
תוצאה מצופה: Copilot מייצר קוד שתואם את ה-conventions של הפרויקט שלכם — tech stack נכון, naming conventions נכונים, error handling כמו שהגדרתם.
.instructions.md — הנחיות ממוקדות עם applyTo
הקובץ הראשי copilot-instructions.md חל על כל הפרויקט. אבל מה אם יש לכם כללים שרלוונטיים רק לקבצי טסטים? או רק ל-React components? או רק ל-API routes?
לשם כך קיימים קבצי .instructions.md — קבצים עם סיומת .instructions.md שנמצאים בתיקיית .github/instructions/. הפיצ'ר הזה נוסף ביולי 2025 והוא אחד השיפורים המשמעותיים ביותר במערכת ההנחיות של Copilot. הקבצים האלה משתמשים ב-YAML frontmatter (כותרת מטא-דאטה) — בלוק מטא-דאטה בתחילת הקובץ שאומר ל-Copilot על אילו קבצים ההנחיה חלה.
הרעיון פשוט: במקום קובץ הנחיות אחד גדול שמנסה לכסות את כל הפרויקט, אתם יוצרים קבצים קטנים וממוקדים. קובץ אחד לכללי TypeScript, קובץ אחד לכללי testing, קובץ אחד לכללי React. כל קובץ מופעל רק כשעובדים על קובץ שמתאים ל-pattern שהגדרתם.
המבנה: YAML frontmatter + הנחיות
כל קובץ .instructions.md מתחיל בבלוק YAML בין שני סימני ---, ואחריו ההנחיות עצמן:
---
applyTo: "**/*.ts,**/*.tsx"
---
# TypeScript Conventions
- Use strict mode — no `any` types
- Prefer `interface` over `type` for object shapes
- Use `readonly` for properties that shouldn't change
- Export types from dedicated `.types.ts` files
- Use discriminated unions for state management
השדה applyTo מקבל glob patterns — כללים שמתארים נתיבי קבצים:
| Pattern | מטרגט | דוגמת שימוש |
|---|---|---|
**/*.ts | כל קבצי TypeScript בפרויקט | כללי TypeScript |
**/*.test.* | כל קבצי הטסטים | כללי testing |
src/components/**/* | כל הקבצים בתיקיית components | כללי React components |
src/routes/**/*.ts | קבצי TypeScript בתיקיית routes | כללי API routes |
**/*.css,**/*.scss | קבצי סטייל (מספר patterns) | כללי styling |
prisma/**/* | קבצי Prisma | כללי database schema |
שדות נוספים ב-frontmatter
מעבר ל-applyTo, יש שדות נוספים שאפשר להגדיר:
---
name: "React Component Standards"
description: "Conventions for React components in this project"
applyTo: "src/components/**/*.tsx"
excludeAgent: "coding-agent"
---
- name — שם ידידותי להנחיה (אופציונלי, עוזר לזיהוי ב-Agent Logs)
- description — תיאור קצר (אופציונלי)
- applyTo — glob pattern שמגדיר על אילו קבצים ההנחיה חלה
- excludeAgent — מאפשר להחריג סוכן ספציפי:
"code-review"או"coding-agent"
השדה excludeAgent חשוב במיוחד: הוא מאפשר ליצור הנחיות שחלות רק על Code Review אבל לא על Agent Mode, או להפך. לדוגמה, הנחיות סטייל קפדניות שרלוונטיות ל-Code Review אבל מיותרות ב-Agent Mode.
דוגמאות מעשיות לקבצי .instructions.md
הנה שלוש דוגמאות מעשיות שתוכלו להעתיק ולהתאים:
---
applyTo: "**/*.test.*,**/*.spec.*"
name: "Testing Standards"
---
# Testing Conventions
- Use `describe` + `it` blocks, not standalone `test()`
- Name pattern: "should [expected behavior] when [condition]"
- Use `beforeEach` for setup, not `beforeAll` (avoid shared state)
- Mock external services with `vi.mock()` — never call real APIs in tests
- Every test file: at least 1 happy path + 1 error path
- Prefer `toEqual` for objects, `toBe` for primitives
- Async tests: always use `await` — never callbacks
---
applyTo: "src/components/**/*.tsx"
name: "React Component Standards"
---
# React Component Conventions
- Functional components only — no class components
- Props: always define interface, export it from same file
- Hooks: extract to custom hooks when logic exceeds 10 lines
- Naming: PascalCase for components, camelCase for hooks (useXxx)
- State: Zustand for global, useState for local
- Avoid inline styles — use Tailwind classes
- Event handlers: prefix with "handle" (handleClick, handleSubmit)
---
applyTo: "src/routes/**/*.ts"
name: "API Route Standards"
---
# API Route Conventions
- Use Zod schemas for request body and query params validation
- Always return typed responses: { data: T } or { error: string }
- HTTP status codes: 200 OK, 201 Created, 400 Bad Request, 404 Not Found, 500 Internal
- Wrap all handlers in try/catch with AppError
- Log all errors with request ID for traceability
- Rate limiting: apply to all public endpoints
- Authentication: verify JWT in middleware, not in route handler
שימו לב: כל קובץ ממוקד בדומיין אחד. קובץ הטסטים מכיל רק כללי testing. קובץ ה-components מכיל רק כללי React. קובץ ה-API routes מכיל רק כללי backend. ככה Copilot מקבל הנחיות רלוונטיות בדיוק לקובץ שהוא עובד עליו — לא עומס של כללים לא רלוונטיים.
הגישה הזו יותר אפקטיבית מקובץ אחד ענק מכמה סיבות:
- פחות רעש — כשעובדים על קובץ test, Copilot לא קורא כללי styling שלא רלוונטיים
- קל לתחזוקה — שינוי בכללי testing לא דורש עריכה בקובץ גדול
- אפשר לחלק אחריות — מפתח frontend אחראי על instructions של components, מפתח backend על API routes
- excludeAgent — אפשר להחריג סוכנים ספציפיים בקובץ אחד בלי להשפיע על שאר ההנחיות
ארגון קבצים: תיקיות משנה
כשיש לכם יותר מ-5-6 קבצי הנחיות, כדאי לארגן אותם בתיקיות משנה בתוך .github/instructions/:
.github/instructions/
├── lang/
│ ├── typescript.instructions.md
│ └── python.instructions.md
├── testing/
│ ├── unit-tests.instructions.md
│ └── e2e-tests.instructions.md
├── frontend/
│ ├── components.instructions.md
│ └── styles.instructions.md
├── backend/
│ ├── api-routes.instructions.md
│ └── database.instructions.md
└── review/
└── code-review.instructions.md
Copilot סורק את כל התיקיות בתוך .github/instructions/ באופן רקורסיבי — כל קובץ .instructions.md שנמצא בכל רמת עומק ייטען אוטומטית. לכן ארגון בתיקיות הוא רק עניין של סדר עבורכם, לא משנה את ההתנהגות.
איך ההתמזגות עובדת
נקודה קריטית שצריך להבין: כש-Copilot עובד על קובץ מסוים, הוא מצרף את כל ההנחיות הרלוונטיות — לא מחליף. אם אתם עורכים קובץ UserForm.tsx, Copilot יקרא:
- את
copilot-instructions.md(תמיד) - את
typescript.instructions.md(כי הקובץ מתאים ל-**/*.tsx) - את
components.instructions.md(כי הקובץ נמצא ב-src/components/)
כל שלושת הקבצים מתמזגים יחד. לכן, הימנעו מהנחיות סותרות בין קבצים שונים — ההתנהגות במקרה של סתירה היא לא צפויה (non-deterministic).
צרו את התיקייה .github/instructions/ בפרויקט שלכם. בתוכה, צרו קובץ tests.instructions.md עם התוכן הבא:
---
applyTo: "**/*.test.*,**/*.spec.*"
---
# Testing Standards
- Use descriptive test names: "should [action] when [condition]"
- Prefer `it()` over `test()` for consistency
- Use `beforeEach` for common setup, avoid `beforeAll`
- Mock external dependencies, never real APIs
- Each test file must have at least one positive and one negative test
זמן: 20 דקות | תוצר: 3 קבצי .instructions.md עם applyTo
- צרו את תיקיית
.github/instructions/(אם עוד לא קיימת) - צרו קובץ 1 —
typescript.instructions.mdעםapplyTo: "**/*.ts,**/*.tsx"ובתוכו 5 כללי TypeScript ספציפיים לפרויקט שלכם - צרו קובץ 2 —
tests.instructions.mdעםapplyTo: "**/*.test.*,**/*.spec.*"ובתוכו כללי testing: naming conventions, mock strategy, assertions - צרו קובץ 3 —
components.instructions.mdעםapplyTo: "src/components/**/*"ובתוכו כללי React/Vue/Angular ספציפיים - לכל קובץ, ודאו שה-YAML frontmatter תקין: שני סימני
---, שדהapplyToעם glob pattern - בדקו שהקבצים נטענים: פתחו Agent Logs ב-VS Code וחפשו Discovery events
- בדקו שההנחיות עובדות: עברו לקובץ שמתאים ל-pattern, שלחו פרומפט, ובדקו שהפלט תואם את ההנחיות
תוצאה מצופה: כשאתם עובדים על קובץ טסט, Copilot מיישם את כללי הטסטים. כשעובדים על component, הוא מיישם את כללי ה-components. הכל אוטומטי.
AGENTS.md ו-CLAUDE.md — תאימות צולבת עם כלים אחרים
בעולם הפיתוח של 2026, רוב הצוותים לא משתמשים רק בכלי AI אחד. ובשוק הישראלי, המגמה הזו חזקה במיוחד: סקר של נתיב דיגיטל (Q1 2026) הראה ש-63% מצוותי פיתוח בסטארטאפים ישראליים משתמשים ב-2 כלי AI לפחות. יש מפתחים שעובדים עם Copilot ב-VS Code, אחרים עם Claude Code בטרמינל, ואולי מישהו בצוות משתמש ב-Cursor או ב-Windsurf. השאלה היא: איך שומרים על הנחיות אחידות כשכל כלי קורא קובץ אחר?
AGENTS.md — הקובץ האוניברסלי
הקובץ AGENTS.md הוא תקן פתוח שמזוהה על ידי מספר סוכני AI — לא רק Copilot. הוא יושב בשורש הריפוזיטורי ומכיל את ההנחיות שכל סוכן AI צריך לקרוא.
מה ייחודי ב-AGENTS.md:
- צולב-כלים — Copilot, Claude Code, וכלים נוספים מזהים אותו
- תמיכה בתיקיות משנה — אפשר ליצור
AGENTS.mdב-subfolder לפרויקטי monorepo - frontmatter ייחודי — שדות כמו
on,permissions, ו-safe-outputsשנותנים שליטה על ההתנהגות
ניתוח של 2,500 ריפוזיטוריז שמשתמשים ב-AGENTS.md (מחקר של GitHub, 2026) חשף כמה תובנות מעניינות:
- הקבצים הטובים ביותר כוללים: פקודות build/test, project conventions, ומבנה תיקיות
- ריפוזיטוריז עם AGENTS.md מראים 37% פחות review comments על code style (כי ה-AI כבר מיישם את הסטנדרטים)
- רוב הקבצים (68%) הם בין 30 ל-100 שורות — לא קצרים מדי ולא ארוכים מדי
- הטעות הנפוצה ביותר: לכתוב AGENTS.md שנראה כמו README — עם הסברים למפתחים אנושיים במקום הנחיות ל-AI
CLAUDE.md — ספציפי ל-Claude
הקובץ CLAUDE.md הוא ספציפי ל-Claude Code ולכלים מבוססי Claude. הוא יכול לשבת בשורש הריפוזיטורי, בתיקיית .claude/, או בתיקיית הבית של המשתמש.
חדש: VS Code Copilot תומך גם הוא ב-CLAUDE.md דרך ההגדרה chat.useClaudeMdFile. זה אומר שאם אתם כבר משתמשים ב-CLAUDE.md עם Claude Code, גם Copilot יקרא אותו כשהוא עובד באותו workspace. זה פותר בעיה שהייתה מטרידה צוותים ישראליים רבים: לנהל שני קבצי הנחיות נפרדים עם אותו תוכן.
אסטרטגיית 80/20 לצוותים מרובי-כלים
הגישה המומלצת לצוותים שמשתמשים במספר כלי AI:
| קובץ | מה לשים בו | אחוז הכללים |
|---|---|---|
AGENTS.md | כללים משותפים: tech stack, conventions, build commands | 80% |
.github/copilot-instructions.md | כללים ספציפיים ל-Copilot בלבד | 10% |
CLAUDE.md | כללים ספציפיים ל-Claude בלבד | 10% |
Claude Code גם קורא את AGENTS.md כ-fallback אם אין CLAUDE.md. כלומר, אם יש לכם רק AGENTS.md, גם Claude יעבוד איתו.
# Project: TaskFlow
## About
B2B task management SaaS — TypeScript monorepo with Fastify backend and React frontend.
## Build & Test
- Install: `pnpm install`
- Dev: `pnpm dev` (starts both backend and frontend)
- Test: `pnpm test` (vitest)
- E2E: `pnpm test:e2e` (playwright)
- Lint: `pnpm lint` (eslint + prettier)
## Project Structure
- `packages/api/` — Fastify backend
- `packages/web/` — React frontend
- `packages/shared/` — shared types and utils
- `prisma/` — database schema and migrations
## Conventions
- TypeScript strict, no `any`
- Zod for runtime validation
- Named exports only
- Error handling: try/catch with AppError class
- Tests next to source files (*.test.ts)
## Important Notes
- Never modify `packages/shared/` without updating both api and web
- Database migrations require `pnpm prisma migrate dev`
- All env vars documented in `.env.example`
שימו לב: הקובץ הזה מכיל מידע שכל סוכן AI צריך — לא משנה אם זה Copilot, Claude, Cursor או כלי אחר. זה הבסיס של גישת ה-80/20.
מתי להשתמש בכל קובץ — סיכום
| קובץ | מתי להשתמש | מי קורא אותו |
|---|---|---|
AGENTS.md | צוות עם מספר כלי AI | Copilot, Claude Code, Cursor, Windsurf |
.github/copilot-instructions.md | פרויקט שמשתמש רק ב-Copilot | Copilot בלבד |
CLAUDE.md | כללים ספציפיים ל-Claude שלא רלוונטיים ל-Copilot | Claude Code, VS Code (עם הגדרה) |
| שלושתם ביחד | הגישה המומלצת: AGENTS.md + קבצים ספציפיים לכל כלי | כל הכלים |
בדקו ב-VS Code Settings: חפשו chat.useClaudeMdFile. אם הוא כבוי, הפעילו אותו. מעכשיו Copilot גם יקרא את CLAUDE.md אם הוא קיים בפרויקט.
שלוש הרמות — אישי, פרויקט וארגון
אחד המושגים החשובים ביותר שצריך להבין ב-Custom Instructions הוא ירושת הנחיות (instruction inheritance). Copilot מזהה הנחיות משלוש רמות שונות — אישי, פרויקט, וארגון. ההנחיות מכל הרמות מתמזגות יחד (merged) לקונטקסט אחד שנשלח למודל. הן לא דורסות אחת את השנייה — Copilot מנסה לקיים את כולן בו-זמנית. אבל כשיש סתירה, לרמות הגבוהות יש עדיפות:
רמה 1: הנחיות אישיות (Personal) — עדיפות גבוהה ביותר
הנחיות שמוגדרות ברמת המשתמש ב-VS Code. הן חלות על כל פרויקט שאתם עובדים עליו.
איך להגדיר:
- פתחו VS Code ← Settings (Ctrl+,)
- חפשו
github.copilot.chat.codeGeneration.instructions - לחצו "Edit in settings.json" והוסיפו הנחיות
לחלופין, דרך Command Palette: Ctrl+Shift+P ← חפשו Copilot: Open Custom Instructions.
מתי להשתמש: העדפות אישיות שלא משתנות בין פרויקטים. דוגמאות:
"Always respond in Hebrew"— שפת התגובה שלכם"Prefer functional programming style"— סגנון תכנות אישי"Add JSDoc comments to all public functions"— רמת תיעוד שאתם דורשים"Use descriptive variable names, avoid single-letter names"— העדפת naming
סנכרון בין מכשירים: VS Code Settings Sync מאפשר לסנכרן את ההנחיות האישיות בין מחשבים שונים. פתחו Command Palette, חפשו Settings Sync: Configure, וסמנו "Prompts and Instructions".
רמה 2: הנחיות פרויקט (Repository) — עדיפות בינונית
כל הקבצים שלמדנו עד עכשיו: copilot-instructions.md, קבצי .instructions.md, ו-AGENTS.md. הם נשמרים בריפוזיטורי ומשותפים עם כל הצוות דרך Git.
היתרון הגדול: כל מפתח בצוות מקבל את ההנחיות אוטומטית. אין צורך בהגדרה ידנית — אחרי git clone או git pull, ההנחיות כבר שם.
מתי להשתמש: כללים ספציפיים לפרויקט — tech stack, conventions, file structure, build commands, testing patterns.
רמה 3: הנחיות ארגוניות (Organization) — עדיפות נמוכה ביותר
הנחיות שמוגדרות על ידי admin של הארגון ב-GitHub, וחלות על כל הריפוזיטוריז בארגון.
חדש! נכון להיום (אפריל 2026), הנחיות ארגוניות הפכו ל-GA (Generally Available) עבור Copilot Business ו-Enterprise. עד עכשיו זה היה ב-Preview. זה אומר שהפיצ'ר יציב, מתועד, ומומלץ לשימוש production.
מי יכול להגדיר: רק Organization Owners (בעלי הארגון ב-GitHub). מפתחים רגילים לא יכולים לשנות את ההנחיות הארגוניות — זה by design, כדי לשמור על אחידות.
איך להגדיר:
- ב-GitHub.com ← Profile ← Organizations
- בחרו את הארגון ← Settings
- בתפריט הצד: Copilot ← Custom Instructions
- תחת "Preferences and instructions" — כתבו את ההנחיות
מתי להשתמש: כללים שרלוונטיים לכל הריפוזיטוריז בארגון — security standards, logging conventions, compliance rules, coding style basics. דוגמאות ספציפיות:
Never commit secrets or API keys to source codeAll error messages must be descriptive and actionableUse structured logging — no console.log in productionFollow OWASP top 10 security guidelinesAll public APIs must have rate limiting
שימו לב: הנחיות ארגוניות צריכות להיות טכנולוגיה-אגנוסטיות (technology-agnostic) ככל הניתן — הן חלות על ריפוזיטוריז ב-Python, TypeScript, Go, ושפות אחרות. לכן, כללים כמו "use Zod for validation" לא מתאימים כאן — הם ספציפיים לפרויקטי TypeScript ושייכים ברמת הריפו.
הגדירו הנחיה אישית אחת ב-VS Code. פתחו Settings, חפשו github.copilot.chat.codeGeneration.instructions, והוסיפו הנחיה כמו: "Always add descriptive comments in Hebrew for complex logic".
| סוג ההנחיה | רמה אישית | רמת פרויקט | רמת ארגון |
|---|---|---|---|
| העדפת שפת תגובה (עברית/אנגלית) | ✅ כאן | ||
| סגנון קוד אישי (functional vs OOP) | ✅ כאן | ||
| Tech stack ספציפי לפרויקט | ✅ כאן | ||
| Naming conventions של הפרויקט | ✅ כאן | ||
| פקודות build/test/deploy | ✅ כאן | ||
| Security standards (לא secrets בקוד) | ✅ כאן | ||
| Logging format אחיד | ✅ כאן | ||
| License compliance | ✅ כאן |
כלל אצבע: אם ההנחיה רלוונטית רק לך → אישי. אם רלוונטית לפרויקט → פרויקט. אם רלוונטית לכל הריפוזיטוריז בארגון → ארגון.
היקף: איפה ההנחיות עובדות ואיפה לא
אחד המקורות הגדולים ביותר לתסכול עם הנחיות הוא ציפייה שגויה: מפתחים כותבים הנחיות מעולות ואז מופתעים שהן לא עובדות בכל מקום. הסיבה היא ש-הנחיות חלות רק על חלק ממצבי העבודה של Copilot. הנה הטבלה המלאה:
| מצב עבודה | הנחיות חלות? | הערות |
|---|---|---|
| Chat Mode (Ask) | ✅ כן | הנחיות נקראות בתחילת כל שיחה |
| Agent Mode | ✅ כן | ההשפעה המשמעותית ביותר — Agent מייצר קוד מלא |
| Edit Mode | ✅ כן | הנחיות חלות על העריכות שנוצרות |
| Code Review (GitHub.com) | ✅ כן* | *רק 4,000 תווים ראשונים, מה-base branch |
| Copilot CLI | ✅ כן | קורא הנחיות מהריפוזיטורי הנוכחי |
| Autocomplete (Inline) | ❌ לא | השלמות קוד אינן מושפעות מהנחיות |
הרבה מפתחים מופתעים לגלות שההנחיות לא חלות על השלמות קוד (autocomplete). כשאתם מקלידים ו-Copilot מציע השלמה inline — הוא לא קורא את copilot-instructions.md. ההנחיות חלות רק על צ'אט, Agent Mode, ו-Code Review.
למה זה קורה: Autocomplete חייב להיות מהיר מאוד (מילישניות), ואין זמן לעבד קובץ הנחיות שלם.
מה לעשות במקום: אם אתם רוצים להשפיע על autocomplete, השתמשו בדוגמאות קוד קיימות בפרויקט — Copilot לומד מהקבצים הפתוחים ומהקבצים הסמוכים.
נסו את זה: כתבו הנחיה "Always use snake_case for variable names". עכשיו פתחו קובץ TS והתחילו לכתוב const my — האם ה-autocomplete משתמש ב-snake_case? (Spoiler: לא). עכשיו שלחו את אותו prompt בצ'אט — האם שם הוא משתמש ב-snake_case? (כן!).
שילוב עם Code Review — הנחיות שמשפרות ביקורת קוד
Copilot Code Review הוא אחד הכלים החזקים ביותר שמשתלבים עם מערכת ההנחיות. כשאתם מבקשים מ-Copilot לסקור Pull Request ב-GitHub.com, הוא קורא את ההנחיות שלכם ומשתמש בהן כבסיס לביקורת. במקום ביקורת גנרית שמחפשת בעיות כלליות, אתם מקבלים ביקורת שמותאמת לסטנדרטים של הפרויקט שלכם — ממש כמו Code Review מחבר צוות ותיק שמכיר את כל הכללים.
איך Copilot Code Review קורא הנחיות
כמה נקודות חשובות:
- מגבלת תווים: Code Review קורא רק את 4,000 התווים הראשונים מכל קובץ הנחיות. כל מה שמעבר — לא ייקרא
- Branch: ההנחיות נקראות מה-base branch של ה-PR (בדרך כלל
main), לא מה-feature branch. כלומר, אם הוספתם הנחיות חדשות ב-feature branch, הן לא ישפיעו על ה-Code Review של אותו PR - excludeAgent: אפשר ליצור הנחיות שחלות רק על Code Review על ידי שימוש ב-
excludeAgent: "coding-agent"
---
applyTo: "**/*"
excludeAgent: "coding-agent"
name: "Code Review Standards"
---
# Code Review Focus Areas
- Check for hardcoded secrets, API keys, or credentials
- Verify error handling exists for all async operations
- Flag any `console.log` or debug statements in production code
- Ensure new functions have JSDoc comments
- Check that database queries use parameterized inputs (SQL injection prevention)
- Verify tests exist for new public functions
שימו לב: ה-excludeAgent: "coding-agent" מבטיח שההנחיות האלה ייקראו רק על ידי Code Review ולא יפריעו ל-Agent Mode בעבודה הרגילה.
איך לבקש Code Review מ-Copilot
התהליך המעשי:
- צרו Pull Request ב-GitHub.com (או נווטו ל-PR קיים)
- בתפריט Reviewers בצד, בחרו Copilot
- Copilot יסרוק את הקוד לפי ההנחיות מה-base branch
- בהערות שלו, יש כפתור "Implement suggestion" — לחיצה תיצור PR חדש עם התיקונים
אפשר גם להגדיר automatic code review — Copilot יסקור כל PR חדש אוטומטית, בלי לבקש ידנית. את ההגדרה עושים בקביעות הריפוזיטורי ב-GitHub.
טיפ מעשי: הנחיות code review מותאמות לשוק הישראלי
בפרויקטים ישראליים, שווה להוסיף כללים ספציפיים:
Verify RTL support for all user-facing text— בדיקת תמיכה בעבריתCheck date handling uses IL locale (dd/MM/yyyy)— פורמט תאריך ישראליEnsure currency displays in ILS (₪) not USD— מטבע נכוןValidate phone numbers accept IL format (+972 or 05x)— פורמט טלפון ישראלי
אם קובץ ההנחיות שלכם ל-Code Review ארוך מ-4,000 תווים (כ-600-800 מילים), Copilot פשוט יתעלם מהחלק שמעבר. שמרו על הנחיות Code Review ממוקדות וקצרות.
למה זה קורה: הפיתוי לכתוב רשימה ארוכה של כל מה שצריך לבדוק ב-Code Review.
מה לעשות במקום: התמקדו ב-5-7 כללים הכי חשובים. אם יש לכם יותר, פצלו לכמה קבצי .instructions.md עם applyTo שונה.
צרו קובץ .github/instructions/review.instructions.md עם 5 כללי Code Review שחשובים לכם. השתמשו ב-excludeAgent: "coding-agent". שמרו על פחות מ-4,000 תווים.
תבניות מוכנות — TypeScript, Python, React
לא חייבים להתחיל מאפס. הנה שלוש תבניות מוכנות שאפשר להתאים לפרויקט שלכם. כל תבנית עוקבת אחרי הפורמט המומלץ: קצרה, ספציפית, עם bullet points.
תבנית 1: פרויקט TypeScript/Node.js
# Project: [שם הפרויקט]
## Tech Stack
- Runtime: Node.js 22 + TypeScript 5.x
- Framework: Fastify with @fastify/type-provider-typebox
- ORM: Prisma with PostgreSQL
- Validation: Zod for input, TypeBox for Fastify schemas
- Testing: Vitest + Supertest
## Conventions
- Use TypeScript strict mode — no `any`, no `as` casts
- Prefer `interface` for object shapes, `type` for unions
- Named exports only — no default exports
- Use barrel files (index.ts) per feature directory
- Error handling: use `AppError` class from `src/errors/`
- Logging: use `logger` from `src/lib/logger.ts`, never `console.log`
## Commands
- Dev: `pnpm dev`
- Test: `pnpm test`
- Lint: `pnpm lint`
- Build: `pnpm build`
- Migrate: `pnpm prisma migrate dev`
תבנית 2: פרויקט Python/FastAPI
# Project: [שם הפרויקט]
## Tech Stack
- Python 3.12+ with type hints everywhere
- Framework: FastAPI with Pydantic v2
- Database: SQLAlchemy 2.0 + Alembic migrations
- Testing: pytest with pytest-asyncio
## Conventions
- Follow PEP 8, enforced by Ruff
- Use Pydantic BaseModel for all request/response schemas
- Async by default — use `async def` for all endpoints
- Type hints on ALL function signatures and return types
- Docstrings: Google style on all public functions
- Never use `print()` — use `structlog` logger
## Commands
- Dev: `uv run uvicorn main:app --reload`
- Test: `uv run pytest`
- Lint: `uv run ruff check .`
- Format: `uv run ruff format .`
- Migrate: `uv run alembic upgrade head`
תבנית 3: פרויקט React/Next.js
# Project: [שם הפרויקט]
## Tech Stack
- Next.js 15 with App Router + TypeScript
- Styling: Tailwind CSS with shadcn/ui components
- State: Zustand for client state, React Query for server state
- Forms: React Hook Form + Zod validation
- Testing: Vitest + Testing Library
## Conventions
- Functional components only — no class components
- Use `"use client"` directive only when needed
- Prefer Server Components — fetch data on the server
- File naming: PascalCase for components, camelCase for utils
- Co-locate tests next to source: `Button.tsx` + `Button.test.tsx`
- Use absolute imports with `@/` prefix
## File Structure
- Pages: app/(routes)/[route]/page.tsx
- Components: src/components/[feature]/[ComponentName].tsx
- Shared UI: src/components/ui/ (shadcn components)
- Hooks: src/hooks/use[HookName].ts
- API: app/api/[resource]/route.ts
את כל התבניות האלה (ועוד למעלה מ-120 נוספות) אפשר למצוא ב-awesome-copilot — ריפוזיטורי רשמי של GitHub עם תבניות הנחיות, agents, ו-skills: github.com/github/awesome-copilot.
איך להתאים תבנית לפרויקט שלכם
העתקה עיוורת של תבנית היא טעות נפוצה. הנה התהליך הנכון:
- התחילו מתבנית — בחרו את התבנית הקרובה ביותר לפרויקט שלכם
- מחקו מה שלא רלוונטי — אם אתם לא משתמשים ב-Prisma, מחקו את שורת Prisma. אם אתם לא ב-Fastify, החליפו ל-Express/Nest
- הוסיפו כללים ספציפיים לפרויקט — naming conventions מיוחדים, patterns שחשובים לכם, כלים ייחודיים
- בדקו עם פרומפט — שלחו ל-Copilot בקשה טיפוסית ובדקו אם הפלט תואם את הציפיות
- תקנו ושפרו — אם Copilot עדיין עושה משהו לא רצוי, הוסיפו כלל ספציפי שמתקן את זה
כלל אצבע לשוק הישראלי: אם הפרויקט שלכם משרת משתמשים ישראליים, הוסיפו את הכללים הבאים בכל תבנית:
All user-facing text must support RTL (Hebrew)Date format: dd/MM/yyyy (Israeli standard)Currency: ILS (₪) with VAT 17% calculations where relevantPhone validation: support +972 and 05x formatsID validation: support Israeli ID (teudat zehut) 9-digit format with check digit
זמן: 15 דקות | תוצר: תבנית copilot-instructions.md מותאמת
- בחרו את התבנית הכי קרובה לפרויקט שלכם (TypeScript, Python, או React)
- העתיקו אותה ל-
.github/copilot-instructions.md - החליפו את
[שם הפרויקט]בשם האמיתי - התאימו את ה-tech stack: הוסיפו/הסירו כלים לפי מה שבפרויקט שלכם
- הוסיפו לפחות 2 conventions ספציפיים לפרויקט שלכם שלא קיימים בתבנית
תוצאה מצופה: קובץ הנחיות שמשקף במדויק את הפרויקט שלכם, לא תבנית גנרית.
הנחיות שעובדות vs הנחיות שמבלבלות — השוואה מעשית
עד עכשיו למדנו איפה לשים הנחיות ואיך לטרגט אותן. עכשיו נתמקד בשאלה הקריטית ביותר: מה לכתוב. ההבדל בין הנחיה טובה לגרועה הוא לא רק עניין של סגנון — הנחיה גרועה יכולה להחמיר את הפלט במקום לשפר אותו. הנה השוואה מפורטת של 5 דפוסים נפוצים:
| ❌ הנחיה גרועה | ✅ הנחיה טובה | למה |
|---|---|---|
| "Write clean code" | "Use TypeScript strict mode, no any types" | "Clean code" הוא עמום — Copilot לא יודע מה זה אומר עבורכם |
| "Use best practices for error handling" | "Wrap async operations in try/catch, use AppError class from src/errors/" | "Best practices" הוא גנרי, הגרסה הטובה מציינת בדיוק מה לעשות |
| "Be careful with security" | "Never hardcode secrets. Use env vars via process.env. Validate all user input with Zod." | "Be careful" לא actionable — הגרסה הטובה נותנת צעדים קונקרטיים |
| "Follow our naming conventions" | "Use camelCase for variables, PascalCase for types, UPPER_SNAKE for constants" | "Our conventions" — Copilot לא יודע מה הם אלא אם תגידו לו |
| "Please try to remember to add comments when appropriate to make the code more readable and maintainable for future developers" | "Add JSDoc to all public functions. Inline comments for non-obvious logic only." | ההנחיה הגרועה ארוכה, מנומסת מדי, ולא ברורה. הטובה — 2 כללים חדים |
הנחיה שעובדת הפוך — דוגמה לכישלון
הנה סיפור שקורה לא מעט: מפתחת כתבה את ההנחיה הבאה: "Always add comprehensive error handling with detailed logging and user-friendly messages that explain exactly what went wrong and how to fix it".
התוצאה? Copilot הוסיף 30 שורות של error handling לכל פונקציה של 5 שורות. Error messages ארוכים שחשפו implementation details ללקוח. Logging כל כך מפורט שהקונסול הציף אלפי הודעות.
הגרסה המשופרת: "Use try/catch with AppError class. Log error ID + message. Return generic error to client." — 3 כללים ברורים שנותנים בדיוק את התוצאה הרצויה.
5 טיפים של GitHub לכתיבת הנחיות טובות יותר (מתוך הבלוג הרשמי)
- כתבו הנחיות כמו לחבר צוות חדש — אם הייתם מסבירים את זה בעל-פה, ככה לכתוב
- הוסיפו את ה"למה" בקצרה — כשההנחיה מסבירה את הסיבה, Copilot מחליט טוב יותר במקרי קצה. למשל:
"Use Zod for validation (runtime safety — TypeScript types don't exist at runtime)" - הראו preferred pattern ו-avoided pattern — דוגמה של "עשה כך" ו"לא כך" עובדת טוב יותר מתיאור מילולי
- התחילו קטן והרחיבו — 5 כללים טובים > 30 כללים בינוניים. הוסיפו כללים רק כשרואים בעיה חוזרת
- בדקו באופן קבוע — הנחיה שהייתה רלוונטית לפני חודש אולי לא רלוונטית היום
שלוש שאלות לבדיקת איכות הנחיה
לפני שמוסיפים הנחיה חדשה, שאלו:
- האם ההנחיה ספציפית?
כן → שמרו אותה
לא → שכתבו עם פרטים קונקרטיים (שם כלי, pattern, דוגמה) - האם יש דוגמה (preferred/avoided pattern)?
כן → ההנחיה חזקה
לא → הוסיפו דוגמת קוד של "עשה כך" ו"לא כך" - האם היא קצרה מ-2 משפטים?
כן → מצוין, Copilot יעבד אותה היטב
לא → קצרו — הנחיה ארוכה מפחיתה השפעה
תרחיש שקורה הרבה: ברמה האישית הגדרתם "Use tabs for indentation", אבל בפרויקט יש "Use 2-space indentation". מה Copilot יעשה? התשובה: לא צפוי (non-deterministic). לפעמים tabs, לפעמים spaces.
למה זה קורה: כשמוסיפים הנחיות ברמות שונות, קל לשכוח מה כבר הוגדר ברמה אחרת.
מה לעשות במקום: הנחיות אישיות צריכות להיות רק על דברים שלא מוגדרים ברמת הפרויקט. אם יש סתירה — ההנחיה ברמת הפרויקט צריכה לנצח, אבל בפועל זה לא תמיד קורה.
פתחו את קובץ ה-copilot-instructions.md שלכם. העבירו כל הנחיה דרך שלוש השאלות של מסגרת ההחלטה. שכתבו כל הנחיה שלא עוברת את שלוש הבדיקות. כמה הנחיות שכתבתם מחדש? ___
ניפוי באגים — איך לוודא שההנחיות נטענו ועובדות
אחד הדברים שיכולים להוציא מפתחים מדעתם: כתבתם הנחיות מושלמות, שמתם אותן במקום הנכון, אבל Copilot ממשיך להתעלם מהן. לפני שאתם מוחקים הכל ומתחילים מחדש — יש שלושה כלי debugging שיגידו לכם בדיוק מה קורה:
1. Agent Logs — Discovery Events
הכלי הכי ישיר לבדוק אם הנחיות נטענו:
- ב-VS Code: פתחו את Output panel (
Ctrl+Shift+U) - בתפריט הנפתח למעלה, בחרו "GitHub Copilot Chat" או "Agent"
- חפשו Discovery events — תראו רשימה של כל קבצי ההנחיות שנטענו
- אם הקובץ שלכם לא מופיע — יש בעיה במיקום או בפורמט
2. Chat Debug View — System Prompt
כלי מתקדם יותר שמראה את ה-system prompt שנשלח למודל:
- פתחו Command Palette (
Ctrl+Shift+P) - חפשו "Chat Debug View"
- בדקו את ה-System prompt section — ההנחיות שלכם צריכות להופיע שם
3. פקודת /troubleshoot
בצ'אט של Copilot, אפשר לשלוח:
/troubleshoot list all paths you tried to load customizations— מראה את כל הנתיבים שנבדקו/troubleshoot how many tokens did you use— מראה כמה tokens ההנחיות צורכות
צ'קליסט troubleshooting
אם ההנחיות לא עובדות, עברו על הרשימה הזו לפי הסדר — בדרך כלל אחד מהפריטים הראשונים הוא הבעיה:
- מיקום — האם הקובץ ב-
.github/copilot-instructions.md? (לא ב-root, לא ב-github/בלי נקודה) - שם — האם השם בדיוק
copilot-instructions.md? שגיאות נפוצות:copilot_instructions(קו תחתון),instructions.md(חסר copilot),copilot-instruction.md(חסר s) - Frontmatter — לקבצי
.instructions.md: האם יש שני סימני---תקינים? חסרון של אחד מהם שובר את הקובץ - Glob pattern — האם ה-
applyToתואם את הקובץ שאתם עובדים עליו? בדקו עם כלי online כמו globster.xyz - הגדרה מופעלת — האם ב-VS Code Settings ה-setting
github.copilot.chat.codeGeneration.useInstructionFilesמופעל? (ברירת המחדל: כן) - VS Code מעודכן — הנחיות .instructions.md עם applyTo דורשות VS Code 1.93+ (יולי 2025 ומעלה)
- Extension מעודכן — ודאו שה-GitHub Copilot extension מעודכן לגרסה האחרונה
טיפ מנצח: הדרך הכי מהירה לבדוק אם הנחיות עובדות — שאלו את Copilot בצ'אט: "What are the project conventions you know about?". אם הוא מצטט מההנחיות שלכם, הכל עובד.
פתחו את Agent Logs ב-VS Code (Output Panel → GitHub Copilot Chat). שלחו הודעה כלשהי בצ'אט, וחפשו ב-Output את ה-Discovery events. האם אתם רואים את קבצי ההנחיות שיצרתם? רשמו: ___
בניית ספריית הנחיות ארגונית — מהפרויקט האישי לצוות שלם
עד עכשיו עבדנו ברמת פרויקט בודד. אבל מה קורה כשיש לכם 10, 20, או 100 ריפוזיטוריז בארגון? האם צריך לכתוב הנחיות מאפס לכל אחד? ואיך שומרים על עקביות כשכל מפתח בצוות מגדיר הנחיות לבד?
התשובה היא ספריית הנחיות ארגונית — גישה שיטתית בשלוש שכבות שמבטיחה עקביות בלי לחנוק גמישות. הרעיון: הארגון מגדיר את הבסיס, כל פרויקט מתאים את ההנחיות לצרכים שלו, וכל מפתח מוסיף העדפות אישיות.
שלב 1: הנחיות ארגוניות (Org-level)
הגדירו ב-GitHub Organization Settings הנחיות שחלות על כל הריפוזיטוריז. אלה צריכות להיות כללים אוניברסליים:
# [Company Name] — Copilot Organization Instructions
## Security
- Never hardcode secrets, API keys, or credentials in source code
- Use environment variables for all configuration
- Validate all external input before processing
- Log security-relevant events using structured logging
## Code Quality
- All public functions must have documentation
- Error messages must be descriptive and actionable
- No console.log/print in production code — use the project's logger
- All async operations must have error handling
## Compliance
- Include license headers in new files where required
- Follow GDPR guidelines for personal data handling
- All user-facing text must support RTL (Hebrew) layout
שלב 2: תבניות ברמת פרויקט (Template Repo)
צרו template repository ב-GitHub עם קבצי הנחיות מוכנים. כשיוצרים ריפוזיטורי חדש מהתבנית, ההנחיות כבר שם:
.github/copilot-instructions.md— תבנית בסיסית שצריך למלא.github/instructions/security.instructions.md— כללי אבטחה.github/instructions/testing.instructions.md— כללי testingAGENTS.md— הנחיות צולבות כלים
שלב 3: סנכרון וניהול שוטף
ברגע שיש לכם ספריית הנחיות ארגונית, צריך לנהל אותה:
סנכרון הנחיות אישיות בין מכשירים:
- Command Palette →
Settings Sync: Configure - סמנו Prompts and Instructions ברשימת ההגדרות לסנכרון
- מעכשיו ההנחיות האישיות שלכם זמינות בכל מכשיר
ניהול שוטף של הנחיות ארגוניות:
- גרסון (versioning) — שמרו את תבנית ההנחיות ב-template repo ב-Git, עם changelog
- תקשורת — כשמעדכנים הנחיות ארגוניות, שלחו Slack/Teams notification לצוות
- בקרה — הגדירו CODEOWNERS על תיקיית
.github/instructions/כדי שרק בעלי הרשאה ישנו הנחיות - מדידה — בדקו אחת לחודש: האם Code Review output השתפר? האם פחות review comments חוזרים?
דוגמה מהשטח: סטארטאפ ישראלי עם 5 ריפוזיטוריז
הנה מבנה אמיתי (שמות שונו) שעובד היטב בסטארטאפ ישראלי עם צוות של 12 מפתחים:
| רמה | מה הוגדר | מספר כללים |
|---|---|---|
| ארגון (org settings) | Security standards, logging format, no console.log, GDPR compliance, RTL support | 8 כללים |
| Backend repos (copilot-instructions.md) | Fastify + TypeScript + Prisma conventions, error handling pattern, API response format | 15 כללים |
| Frontend repos (copilot-instructions.md) | Next.js + React + Tailwind conventions, component structure, state management | 12 כללים |
| .instructions.md files | 3-4 קבצים ממוקדים בכל ריפו: tests, components, API routes, DB queries | 5-8 כללים per file |
| אישי (per developer) | שפת תגובה, סגנון הערות, העדפות formatting | 3-5 כללים |
סך הכל: כל מפתח מקבל כ-40-50 כללים מותאמים כשהוא עובד — משולבים מכל הרמות. ותהליך ההטמעה לקח יום עבודה אחד לצוות שלם. התוצאה: ירידה של 40% ב-review comments על code style, ו-onboarding של מפתח חדש שהתקצר מיומיים ליום אחד — כי Copilot כבר "מלמד" אותו את הסטנדרטים דרך הפלט שהוא מייצר.
הלקח המרכזי: תתחילו קטן. לא צריך ליישם את כל 3 הרמות ביום הראשון. התחילו מ-copilot-instructions.md בפרויקט אחד. אחרי שבוע, הוסיפו 2-3 קבצי .instructions.md ממוקדים. אחרי חודש, הגדירו הנחיות ארגוניות. הגישה המדורגת הזו עובדת הרבה יותר טוב מהגישה של "הכל בבת אחת".
| רלוונטי לכל הריפוזיטוריז | ספציפי לפרויקט | |
|---|---|---|
| נדרש אכיפה | ✅ ארגון (security, compliance, logging) | ✅ ריפו (tech stack constraints) |
| המלצה/העדפה | ✅ ארגון (code style basics) | ✅ ריפו (framework-specific patterns) |
כלל אצבע: אם ההנחיה רלוונטית ל-80%+ מהריפוזיטוריז בארגון → שימו ברמת ארגון. אם ספציפית לטכנולוגיה או פרויקט → ברמת ריפו.
זמן: 20 דקות | תוצר: ערכת הנחיות ארגונית מוכנה ליישום
- כתבו טקסט הנחיות ארגוניות — 10-15 כללים אוניברסליים (security, quality, compliance)
- צרו תיקייה חדשה
copilot-org-template/ - בתוכה, צרו
.github/copilot-instructions.mdעם placeholder sections שצוותים ימלאו - צרו
.github/instructions/security.instructions.mdעם כללי אבטחה שחלים על כל סוגי הקבצים - צרו
AGENTS.mdבשורש עם ההנחיות המשותפות ל-80% מהכלים - תעדו ב-README קצר: מה כל קובץ עושה, מה צריך להתאים, ומה אסור לשנות
תוצאה מצופה: תבנית שאפשר להפוך ל-template repo ב-GitHub ולהשתמש בה בכל ריפוזיטורי חדש בארגון.
בנוסף לשגרה מפרק 1 (מעקב אחרי Agent Mode), הוסיפו:
| תדירות | משימה |
|---|---|
| יומי | כשמשנים tech stack או מוסיפים כלי חדש — עדכנו את copilot-instructions.md |
| שבועי | סקרו הנחיות שנוספו בצוות — בדקו שאין סתירות בין קבצי .instructions.md |
| שבועי | בדקו Code Review output — האם ההנחיות משפיעות? התאימו אם צריך |
| חודשי | עדכנו תבניות הנחיות לפי שינויים בפרויקט (גרסאות, כלים חדשים) |
| חודשי | סנכרנו הנחיות ארגוניות — וודאו שצוותים חדשים מכירים את ההנחיות |
צרו קובץ .github/copilot-instructions.md בפרויקט הראשי שלכם עם 5 כללים ספציפיים: שם הפרויקט, tech stack, naming convention, פקודת test, וכלל error handling אחד. זה ייקח 5 דקות ותראו שיפור מיידי באיכות הפלט של Copilot.
- למה קובץ copilot-instructions.md לא משפיע על autocomplete?
(רמז: חשבו על ההבדל בזמן התגובה בין chat ל-inline suggestions) - איך הנחיות מרמות שונות (אישי, פרויקט, ארגון) מתנהגות כשיש ביניהן סתירה?
(רמז: התשובה קשורה לאופן שבו ההנחיות מתמזגות) - מה ההבדל בין AGENTS.md ל-copilot-instructions.md, ומתי תבחרו בכל אחד?
(רמז: חשבו על צוות שמשתמש ביותר מכלי AI אחד) - למה Code Review קורא הנחיות מה-base branch ולא מה-feature branch, ואיך זה משפיע על workflow?
(רמז: מה היה קורה אם מישהו היה משנה את ההנחיות ב-PR עצמו?) - איך תדעו אם הנחיה ספציפית מספיק — מה שלושת הקריטריונים?
(רמז: חזרו למסגרת ההחלטה של 3 שאלות)
4 מתוך 5 = עברתם. אם נתקעתם — חזרו לסעיף הרלוונטי.
הפרק הזה חשף את אחד ההבדלים הגדולים ביותר בין שימוש בסיסי ל-mastery ב-Copilot: מערכת ההנחיות המדורגת. הרעיון המרכזי הוא שאתם לא צריכים להגיד ל-Copilot שוב ושוב מה ההעדפות שלכם — אתם כותבים את זה פעם אחת בקובץ, והוא קורא אוטומטית. זו קפיצת מדרגה באפקטיביות שדורשת 15 דקות עבודה חד-פעמית.
הגילוי המפתיע ביותר עבור רוב המפתחים הוא שההנחיות לא חלות על autocomplete — רק על צ'אט, Agent Mode, ו-Code Review. ההבנה הזו לבדה חוסכת שעות של תסכול. בנוסף, מגבלת 4,000 התווים ב-Code Review היא מלכודת שחשוב להכיר מראש.
הערך המעשי הגדול ביותר הוא קובץ copilot-instructions.md טוב — אפילו 5 כללים ספציפיים משנים את האיכות. וכשמוסיפים קבצי .instructions.md ממוקדים לפי סוגי קבצים, הנחיות ארגוניות לכל הריפוזיטוריז, ו-AGENTS.md לתאימות צולבת עם כלים כמו Claude Code — מקבלים מערכת שלמה שעובדת עם כל הצוות ועם כל הכלים. הגישה של 80% כללים משותפים ב-AGENTS.md ו-20% כללים ספציפיים בכל כלי היא הדרך הפרקטית ביותר לנהל צוות מרובה-כלים.
בפרק הבא נעבור ל-MCP Servers — שם נלמד איך להרחיב את Copilot עם כלים חיצוניים שנותנים לו גישה ל-APIs, databases, ושירותים שלא קיימים מובנית. אם Custom Instructions מלמדים את Copilot איך לכתוב קוד, MCP Servers מלמדים אותו מה הוא יכול לעשות.
- ☐ יצרתי קובץ
.github/copilot-instructions.mdעם לפחות 5 כללים ספציפיים לפרויקט שלי - ☐ בדקתי שההנחיות עובדות: שלחתי פרומפט וקיבלתי פלט שתואם את ה-tech stack שלי
- ☐ יצרתי תיקיית
.github/instructions/ - ☐ יצרתי לפחות 3 קבצי
.instructions.mdעםapplyToממוקד - ☐ ודאתי שה-YAML frontmatter תקין בכל קובץ .instructions.md
- ☐ הגדרתי הנחיה אישית אחת לפחות ב-VS Code Settings
- ☐ בדקתי את ההגדרה
chat.useClaudeMdFileב-VS Code - ☐ יצרתי קובץ
review.instructions.mdעםexcludeAgent: "coding-agent" - ☐ פתחתי Agent Logs וודאתי שההנחיות שלי מופיעות ב-Discovery events
- ☐ עברתי על כל הנחיה שלי עם 3 השאלות (ספציפית? דוגמה? קצרה?)
- ☐ כתבתי תבנית הנחיות ארגונית עם כללי security ו-quality
- ☐ יצרתי קובץ AGENTS.md בשורש הפרויקט עם כללים משותפים לכלי AI
- ☐ בדקתי troubleshooting: שלחתי ל-Copilot "What are the project conventions?" וקיבלתי תשובה שמבוססת על ההנחיות שלי
- ☐ עשיתי commit לכל קבצי ההנחיות לריפוזיטורי