الـ subagents بتخلّي Claude يفوّض الشغل لمساعدين AI متخصصين، كل واحد بـ context window خاص بيه وأدوات وsystem prompt. بيمنعوا تلوث السياق في المهام الطويلة، وبيسمحوا بالتنفيذ المتوازي، وبيخلوك تحوّل الخبرة التقنية لـ agents قابلين لإعادة الاستخدام. في الموديول ده، هنغطي إزاي تعمل وتضبط وتستخدم الـ subagents بفعالية.
إنشاء Subagents
الـ subagents هي ملفات markdown بـ YAML frontmatter. ممكن تعرّفها بالـ flag --agents في الـ CLI لجلسة واحدة، أو تحطها في .claude/agents/ لنطاق المشروع (بتتعمل لها commit في git)، أو ~/.claude/agents/ للنطاق الشخصي (كل المشاريع). الـ plugins كمان ممكن تجمّع agents. الأولوية: managed (policy) > CLI-defined > project > user > plugin > built-in. أمر /agents بيديك قائمة تفاعلية لإنشاء وتعديل وإدارة الـ agents.
الـ frontmatter بيعرّف هوية الـ agent. محتوى الـ markdown هو الـ system prompt بتاعه — اكتبه كأنك بتعمل briefing لمتخصص:
---
name: security-reviewer
description: Security-focused code reviewer. Use proactively after writing authentication, authorization, or data handling code.
tools: Read, Grep, Glob
---
You are a senior security engineer specializing in application security.
Review priorities:
1. Authentication and authorization flaws
2. Injection vulnerabilities (SQL, XSS, command)
3. Data exposure and sensitive information handling
4. Cryptographic weaknesses
5. Insecure direct object references
For each finding, provide: severity (Critical/High/Medium/Low), location (file:line), description, and a concrete fix with code example.
When invoked: use Grep and Read to inspect recently changed files.
الـ tools field بيحدد الأدوات اللي الـ agent يقدر يستعملها. security reviewer محتاج Read وGrep وGlob بس — مفيش وصول للكتابة. implementation agent محتاج كل الأدوات. تقييد الأدوات بيخلّي الـ agent أكتر أمانًا وسلوكه أكتر قابلية للتوقع. لو حذفت tools، الـ agent بيورث كل الأدوات المتاحة.
خيارات الإعداد
بجانب الوصول الأساسي للأدوات، الـ frontmatter بيدعم خيارات قوية. model بيحدد الموديل اللي الـ agent بيستخدمه — haiku للمهام السريعة والخفيفة، sonnet للشغل المتوازن، أو opus للتفكير المعقد. كمان ممكن تستخدم inherit عشان يورث موديل الـ parent. effort بيتحكم في عمق التحليل على الموديلات المدعومة زي Sonnet 4.6 وOpus 4.6، مع max كخيار للجلسة الحالية بس. maxTurns بيحدد كم دور الـ agent يقدر يشتغل. permissionMode بيضبط مستوى الصلاحيات. من الحقول المفيدة كمان: disallowedTools وskills لتحميل skills مختارة مسبقًا، وmcpServers لوصول MCP خاص بالـ agent، وinitialPrompt لإرسال أول دور تلقائيًا.
memory بيدي الـ agent تخزين دائم عبر الجلسات. أول 200 سطر من ملف MEMORY.md في مجلد الذاكرة بتاع الـ agent بتتحمّل في الـ system prompt تلقائيًا — Claude بيكتب في الملف ده لما يتعلم حاجات جديدة:
---
name: researcher
memory: user
description: Long-running research assistant with persistent notes
---
You are a research assistant. Check your MEMORY.md at session start to recall previous findings. Update it with new discoveries.
isolation: worktree بيدي الـ agent git worktree خاص بيه وbranch منفصل يعمل فيه تغييرات من غير ما يلمس الـ working tree الأساسي. لما يخلّص، بيرجّع مسار الـ worktree واسم الـ branch عشان تراجعه وتعمل merge. لو ما عملش أي تغييرات، الـ worktree بيتمسح تلقائيًا. الـ agents في worktree isolation كمان يقدروا يستخدموا أداة ExitWorktree عشان يسيبوا الـ worktree صراحةً قبل ما المهمة تخلص — مفيد لما الـ agent يحتاج يسلّم في نص المهمة أو يعلن إنه خلص بدري. أداة EnterWorktree المقابلة بتعمل worktree جديد معزول وتدخل فيه عند الطلب؛ مرّر لها argument بـ path عشان تقفز لـ worktree موجود أصلًا في نفس الـ repo بدل ما تعمل واحد جديد، وده مفيد لما تكمّل مراجعة على branches متوازية من غير ما تعيد تشغيل الجلسة.
background: true بيخلّي الـ agent يشتغل دايمًا كـ background task، عشان المحادثة الأساسية تفضل حرة. اضغط Ctrl+B عشان تحوّل agent شغّال حاليًا للخلفية.
فيه CLI flags بتوسّع اللي الجلسة تقدر توصله. --add-dir <path> بيدّي صلاحيات Read/Edit لمجلدات إضافية غير مجلد العمل الأساسي — مفيد لما الكود بتاعك بيشير لـ shared libraries أو packages في مجلدات مجاورة في monorepo. الـ skills في .claude/skills/ في المجلدات المضافة بتتحمّل تلقائيًا. اضبطها بشكل دائم بـ permissions.additionalDirectories في الإعدادات. --mcp-config <path> بيحمّل تعريفات MCP servers من ملف JSON واحد أو أكتر للجلسة الحالية بس، وبيتدمج مع مصادر الـ MCP بتاعت المستخدم/المشروع. ضيف --strict-mcp-config عشان تتجاهل مصادر المستخدم/المشروع وتستخدم بس الملفات اللي حددتها:
claude --add-dir ~/projects/shared-types --add-dir ~/projects/design-tokens
claude --mcp-config ./ci-servers.json
استخدام وتسلسل الـ Subagents
Claude بيشغّل الـ agents تلقائيًا لما وصف المهمة يطابق الـ description field بتاع الـ agent. عبارات زي “use proactively” ممكن تشجّع التفويض، بس الاستدعاء الصريح هو الطريقة المضمونة لما تحتاج agent معين. استخدم صيغة @"agent-name (agent)" عشان تضمن استخدام agent بعينه، وتتخطى المطابقة التلقائية.
الاستدعاء الصريح بلغة طبيعية كمان بيشتغل:
Use the security-reviewer agent to audit the new auth module.
Have the test-engineer agent write integration tests for the payment service.
Ask the debugger agent to investigate the memory leak in src/workers/queue.ts.
الـ agents ممكن يتسلسلوا ورا بعض، بحيث output واحد يغذّي اللي بعده. شغّل claude agents من الـ terminal عشان تفتح واجهة الـ Agent — قائمة بكل جلسات Claude Code بتوضّح حالتها (working, waiting, completed, failed, idle, stopped) وآخر نشاط. ده مفيد لمتابعة agents كتير شغّالين بالتوازي. مرّر --cwd <path> عشان تفلتر الـ roster على الجلسات اللي اتفتحت تحت المسار ده — مفيد لما تكون شغّال على أكتر من repo وعايز تشوف بس الجلسات بتاعت المشروع الحالي. اضبط CLAUDE_CODE_DISABLE_AGENT_VIEW=1 عشان تعطّلها. كمان تقدر تشغّل session كاملة مع agent معين بـ claude --agent <name>، وتقيّد الـ agents اللي coordinator يقدر يشغّلها بـ Agent(...) tool allowlists.
# اعرض بس جلسات الـ agents اللي بدأت تحت ~/work/api
claude agents --cwd ~/work/api
للسكربتات اللي محتاجة تستهلك الـ roster — boot scripts على شكل tmux-resurrect، أو status bars مخصصة، أو session pickers — مرّر --json لـ claude agents عشان تاخد نفس البيانات كـ array بصيغة قابلة للقراءة آليًا بدل العرض التفاعلي. كل عنصر بيتضمن session id والحالة والاسم والمشروع وآخر نشاط، فـ pipelines زي claude agents --json | jq '.[] | select(.state=="waiting")' بتبقى سهلة:
# صحّي كل جلسة مستنية input
claude agents --json | jq -r '.[] | select(.state == "waiting") | .id' \
| xargs -I {} claude respawn {}
First use the code-analyzer agent to find performance bottlenecks, then use the optimizer agent to fix them.
Claude Code جاي معاه عدة agents جاهزة مش محتاج تعملها: general-purpose للمهام العامة متعددة الخطوات، Explore بيستخدم Haiku للتحليل السريع للكود (قراءة فقط)، Plan بيبحث في الكود قبل ما يقدّم خطط تنفيذ، وclaude-code-guide بيجاوب على أسئلة عن مميزات Claude Code. الـ agents كمان ممكن يكونوا resumable — يعني Claude يقدر يكمّل محادثة سابقة لـ agent بالـ ID بتاعه لما الـ workflow بيمتد على أكتر من دور.
اضبط CLAUDE_CODE_FORK_SUBAGENT=1 عشان تفعّل الـ forked subagents. الـ forked subagent بيورث الـ conversation context الكامل من الجلسة الرئيسية بدل ما يبدأ من الصفر. لما يتفعّل، /fork بيشغّل forked subagent بدل ما يكون alias لـ /branch، وكل الـ subagent spawns بتشتغل في الخلفية. ده متاح في الـ interactive sessions والـ non-interactive mode والـ Agent SDK:
CLAUDE_CODE_FORK_SUBAGENT=1 claude
خاصية Agent Teams التجريبية (محتاجة CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1 أو --agent-teams CLI flag) بتنسّق بين عدة Claude instances بيشتغلوا بالتوازي عبر قائمة مهام وصندوق رسائل مشترك. ده للمشاريع الكبيرة متعددة الملفات اللي agents مستقلين يقدروا يشتغلوا على أجزاء مختلفة في نفس الوقت من غير ما يتداخلوا. SendMessage بيعمل resume تلقائي للـ agents المتوقفين لما ترسل لهم رسالة، فمش محتاج تعمل resume يدوي قبل ما تتواصل معاهم.