// الاتفاق
copilot-instructions.md
كيف ينبغي أن يتصرَّف Copilot في هذا المستودع.
لمستخدمي GitHub Copilot CLI
تخبر التعليمات المخصصة Copilot بكيفية التصرف، لكنها لا تخبره بما يوجد في مستودعك. تفهرس Maguyva قاعدة الكود وتعيد تقديمها عبر MCP، لكي يحرّر GitHub Copilot CLI كما لو أنه قرأ الكود بالفعل.
خطة Free: 3 مستودعات, حتى 50 ألف سطر مُفهرَس من المستودع، بلا بطاقة.
استخدم التعليمات للسلوك. استخدم Maguyva لحقائق قاعدة الكود الحالية.أربع أفكار. لكل واحدة مهمتها.
// الاتفاق
كيف ينبغي أن يتصرَّف Copilot في هذا المستودع.
// النقل
كيف يصل Copilot إلى الأدوات والسياق الخارجيَّين.
// قاعدة الكود
خادم MCP الذي يُرجع حقائق مؤسَّسة عن المستودع.
// من يدفع
الوكلاء لا يدفعون مقابل مقاعد. اطّلع على الأسعار
# .github/copilot-instructions.md
- فضّل حدود الوحدات الحالية.
- شغّل أمر اختبار المستودع قبل اقتراح دمج.
- لا تختلق مسارات ملفات. اسأل قبل إنشاء حزمة جديدة.التعليمات الدائمة مكانها .github/copilot-instructions.md. إنه المكان المناسب لـ:
لم يكن ذلك الملف أبداً فهرساً قابلاً للاستعلام للمستودع. إنه يخبر Copilot كيف يعمل، لكنه لا يخبره بما هو موجود هناك.
أربعة أنماط فشل لا يستطيع Copilot إصلاحها من ملف markdown وحده.
Telling Copilot how to behave does not tell it which class owns parseConfig, or which package actually implements the public API. أول تعديل على شجرة غير مألوفة هو مجرد تخمين لبنية الملفات.
كتلة تعليمات تصف تدفق المصادقة للربع الماضي تصبح خاطئة بوضوح في اليوم الذي يقسّم فيه أحدهم مخزن الجلسات. Copilot will prefer the file you committed over the code that shipped.
“ما الذي يستورد هذا؟” is a graph question. لا يمكن للتعليمات سرد كل مستدعٍ، ولن ترغب في ذلك أصلاً.
حشو المزيد من المستودع في التعليمات يستبدل رموز الاستدلال بلقطة قديمة. بعد بضعة كيلوبايتات، تدفع ثمن خريطة أسوأ.
يفكر Copilot بالفعل بالتعليمات والأدوات.
copilot-instructions.md
اتفاقية
كيف يتصرف Copilot
MCP
القناة
كيف يصل
Maguyva
حقائق قاعدة الكود
ما الذي يراه
تخبر التعليمات المخصصة Copilot بكيفية التصرف.
يمنح Maguyva Copilot خريطة قابلة للاستعلام للكود.
اسأل الخريطة قبل أن تقبل الفرق (diff).
// workflow 01
copilot> كيف تتعامل normalizePhoneNumber مع صيغة E.164؟ semantic::query("normalize phone E.164") src/util/phone.ts:88 normalizePhoneNumber() ← تنفيذ حقيقي test/util/phone.spec.ts:14 jest.mock(...) ← شاهد → يفتح Copilot التنفيذ، وليس المحاكاة. [exit 0]
الأسماء قد تكذب. المحاكاة تخفي الكود الحقيقي. يرتب Maguyva التنفيذ الحقيقي فوق محاكاة الاختبار.
// workflow 02
copilot> ما الذي يستدعي QueueDispatcher.publish؟ graph::callers(QueueDispatcher.publish) 3 في src/billing/* 1 في src/audit/* 1 في src/notifications/* → يستند الفرق (diff) إلى مستوردين حقيقيين. [exit 0]
تظهر نقاط الاستدعاء عبر الحزم مباشرة ضمن السياق. يستند الفرق إلى مستوردين حقيقيين، وليس إلى بحث Copilot النصي.
// workflow 03
copilot> rename PaymentClient → BillingClient graph::callers(PaymentClient) 12 مرجعاً في 7 حزم graph::importers(src/payments/client.ts) 9 مستوردين graph::extends(PaymentClient) فئتان فرعيتان (RetryClient، MockClient) → يقترح Copilot عملية ترحيل مع قائمة الملفات مضمّنة. [exit 0]
يسأل Copilot Maguyva عن التوابع قبل أن يبدأ بالتعديل. تعود قائمة الترحيل مستندة إلى الرسم البياني الحقيقي، وليس إلى ذاكرة Copilot.
ثلاث خطوات. خطة Free: 3 مستودعات, حتى 50 ألف سطر مُفهرَس من المستودع، بلا بطاقة.
// step 01
اختر مستودعاً تعرفه بالفعل، حتى تتمكن من تقييم الإجابات. سجّل مجاناً، اربط GitHub، وانتظر اكتمال الفهرسة.
// step 02
copilot mcp add --transport http --header "Authorization: Bearer mgv_xxxx" maguyva https://maguyva.tools/mcp~/.copilot/mcp-config.json
{
"mcpServers": {
"maguyva": {
"type": "http",
"url": "https://maguyva.tools/mcp",
"headers": {
"Authorization": "Bearer mgv_xxxx"
}
}
}
}// step 03
لا تبدأ بالشركة بأكملها. اطرح سؤالاً واحداً تعرف إجابته بالفعل، ثم افتح الملف المُشار إليه.