أدوار الوكلاء لتطبيقات المحادثة: حدّد شخصيات واضحة، قوالب تسليم الموجهات، وفحوص سريعة حتى يقدّم فريقك تطبيقات ويب وجوال أكثر موثوقية من خلال المحادثة.

المحادثة تساعدك على التحرك بسرعة، لكنها سيئة في الاحتفاظ بصورة كاملة للمنتج داخل رأسها. معظم الإخفاقات ليست "كود سيئ" بحد ذاته. هي فجوات بين ما قصدته، ما افترضه المساعد، وما تم شحنه فعلاً.
الشرخ الأول هو المتطلبات المفقودة. تطلب "تدفق تسجيل بسيط"، لكن لا يكتب أحد حالات الحافة مثل إعادة تعيين كلمة المرور، البريد الإلكتروني مُستخدم بالفعل، أو ماذا يحدث إذا أغلق المستخدم التبويب في منتصف العملية. يقوم المساعد بملء الفراغات، وتصبح تلك التخمينات هي المنتج.
الشرخ الثاني هو القرارات غير المتسقة. رسالة تختار نموذج بيانات، والأخرى تضيف اختصاراً، وثالثة تغيّر تسمية أو قواعد التحقق. كل قرار قد يكون معقولًا بمفرده. مجتمعة، تصنع تطبيقًا هشًا يتعطل عندما تضيف الميزة التالية.
الشرخ الثالث هو غياب الإثبات. بدون اختبارات أساسية وفحوص قبول واضحة، تكتشف المشاكل فقط بعد التجريب. عندها يتحول "يعمل على شاشتي" إلى ليالٍ متأخرة، تصحيحات سريعة، وانكسارات عشوائية.
إصلاح بسيط هو استخدام شخصيات قابلة لإعادة الاستخدام: المخطط الذي يجعل العمل ملموسًا، المعماري الذي يحدد الشكل، المُنفّذ الذي يبني بخطوات صغيرة، المختبر الذي يحاول كسره، والمراجع الذي يلتقط الـ10% الأخيرة التي تسبب 90% من الألم. هذا ليس عملية ثقيلة. إنه طريقة قابلة للتكرار للحفاظ على ثبات القرارات.
تعمل هذه المقاربة للمؤسسين المنفردين، والفرق الصغيرة، والبنّاءين غير التقنيين الذين يستخدمون أدوات المحادثة مثل Koder.ai. يمكنك أن تظل سريعًا، لكن تتوقف عن الاعتماد على الحظ.
هذه الأدوار لا تضمن الجودة سحرًا. لا تزال بحاجة إلى مدخلات واضحة (كيف يبدو النجاح، القيود، والأولويات)، ولا تزال بحاجة لقراءة المخرجات. فكر في الأدوار كحواجز أمان: تقلل الأخطاء الممكن تفاديها، لكنك لا تزال السائق.
تنخفض الموثوقية عندما تحاول محادثة واحدة أن تفعل كل شيء دفعة واحدة: تقرر ماذا تُبني، تصممه، تبرمجه، تختبره، وتقيمه. خلط هذه الوظائف يجعل من السهل تفويت حالات الحافة، تغيير المتطلبات أثناء البناء، أو "إصلاح" الأخطاء بإضافة مزيد من اللخبطة.
طريقة عملية لمنع ذلك هي إبقاء الأدوار متسقة وضيقة. كل دور يمتلك وظيفة واحدة، ولا يُسمح له "بالمساعدة" خارج تلك الوظيفة. هذا يحافظ على تعقّب القرارات ويجعل الأخطاء أسهل في الاكتشاف.
استخدم هذا التسلسل لمعظم الميزات:
التسليمات النظيفة تهم بقدر الأدوار. يجب أن يتضمن كل تسليم ما تم اتخاذه من قرارات، الفرضيات، وما يعنيه "الانتهاء". إذا كنت تستخدم Koder.ai، عامل كل دور كمحادثة منفصلة أو لقطة حتى تتمكن من الرجوع عند اكتشاف أن قرارًا ما كان خاطئًا.
ارجع للخلف بشكل مقصود، لا بالصدفة. إذا فشلت الاختبارات، ارجع إلى المُنفّذ مع تقرير خطأ مختصر. إذا لم يستطع التصميم دعم متطلب جديد، ارجع إلى المعماري. إذا كان المتطلب غير واضح أو يتغير باستمرار، أوقف العمل وارجع إلى المخطط.
احتفظ بنفس الأدوار والترتيب عبر الميزات. بعد عدة مرات، تبني ذاكرة عضلية: تطرح أسئلة أفضل مبكرًا، وتتوقف عن إعادة العمل لاحقًا.
مهمة المخطط هي تحويل فكرة غامضة إلى شيء يمكنك بناؤه والتحقق منه. هذا ليس "كتابة مستندات". إنه الاتفاق على معنى "الانتهاء" قبل وجود أول شاشة أو نقطة نهاية API.
مخرج المخطط الجيد يبقى صغيرًا وقابلًا للاختبار: بيان مشكلة واضح، بعض قصص المستخدم، معايير قبول بسيطة، وقائمة قصيرة من حالات الحافة. كما يذكر ما الذي لن تفعله بعد، حتى لا يبني المُنفّذ ميزة أكبر من المطلوب.
استخدم هذا عندما يكون لديك فكرة ميزة وتريد خطة محكمة تتبعها بقية الأدوار.
You are the Planner. Turn the feature idea below into a buildable plan.
Feature idea:
<PASTE IDEA>
Context:
- App type:
- Target users:
- Current behavior (if any):
- Constraints (time, data, compliance, devices):
Output (keep it short):
1) Problem statement (1-2 sentences)
2) Assumptions (3-6 bullets)
3) Questions to confirm (max 6, prioritized)
4) User stories (2-5)
5) Acceptance criteria (5-10, testable, specific)
6) Edge cases & failure modes (3-8)
7) Out of scope (3-6 bullets)
8) Small milestone plan (2-4 steps, highest value first)
أرسل هذه الرسالة كما هي (معبأة) لتقليل العودة والردود.
PLANNER HANDOFF
Feature: <name>
Problem: <1-2 sentences>
Users: <who>
Must-haves (AC): <5-10 acceptance criteria>
Key edge cases: <3-6>
Out of scope: <3-6>
Open questions (need Architect input): <1-4>
Constraints: <tech, data, privacy, deadlines>
Success signal: <how we’ll know it worked>
إذا فعلت شيئًا واحدًا فقط كمخطط، اجعل معايير القبول قابلة للقياس. على سبيل المثال: "يمكن للمستخدم إعادة تعيين كلمة المرور ويتلقى بريدًا إلكترونيًا خلال 60 ثانية" أفضل من "إعادة تعيين كلمة المرور تعمل".
المهندس المعماري يحول خطة جيدة إلى شكل قابل للبناء. المهمة ليست اختراع أنماط فاخرة. هي اختيار أبسط بنية تعمل فعلاً عندما ينقر المستخدمون الحقيقيون، وتزداد البيانات، وتحدث الأخطاء.
هنا تبدأ الموثوقية أن تصبح حقيقية: حدود واضحة، بيانات واضحة، ومسارات فشل واضحة.
مخرج عملي للمعماري عادةً يغطي:
اجعله ملموسًا. بدلاً من "نظام الإشعارات"، قل "POST /api/alerts، جدول alerts(user_id, type, status)، عرض عدد غير المقروءين في العنوان". بدلًا من "آمن"، قل "جلسة JWT، فحوص صلاحيات على نقاط نهاية الإدارة، حماية حقول PII".
استخدم هذا عندما يسلم المخطط العمل إلى المعماري، أو عندما تريد إعادة ضبط ميزة تبدو فوضوية.
You are the Architect.
Goal: design the simplest buildable structure for this feature.
Context:
- App type: [web/mobile/both]
- Stack: React UI, Go API, PostgreSQL DB (Flutter screens if mobile)
- Existing constraints: [auth method, existing tables, deadlines]
Input (from Planner):
- User story:
- Acceptance criteria:
- Out of scope:
Deliverables (keep it short and specific):
1) UI map: list screens/components with 1-line purpose each.
2) API map: list endpoints with method, path, request/response fields.
3) Data model: tables + key columns + relationships.
4) Key flows: happy path + 2 failure cases and how UI should respond.
5) Non-functional needs: security, performance, audit/logging (only what matters now).
6) Tradeoffs: 3 decisions you made (and what you avoided) to prevent over-design.
Rules:
- Prefer the smallest option that meets acceptance criteria.
- If something is unclear, ask up to 3 questions, otherwise make a reasonable assumption and write it down.
إذا كنت تبني في Koder.ai، يجعل هذا النوع من التسليم التنفيذ أسرع لأن المُنفّذ يمكنه اتباع خريطة واضحة بدل التخمين في منتصف البناء.
المُنفّذ يحول خطة واضحة إلى كود يعمل، دون تغيير الخطة. هنا تُكسب أو تُفقد معظم الموثوقية. الهدف واضح: نبّذ بالضبط ما تم الاتفاق عليه بخطوات صغيرة قابلة للتراجع.
عامل كل تغيير كما لو أنه قد يتم التراجع عنه. اعمل شرائح رفيعة وتوقف عند تلبية معايير القبول. إذا كان شيء غير واضح، اسأل. التخمين هو كيف تتحول الميزات الصغيرة إلى إعادة كتابة مفاجئة.
يترك المُنفّذ الجيد أثرًا قصيرًا من الأدلة: ترتيب البناء، ما تغيّر، ما لم يتغيّر (لتجنب زحف النطاق الخفي)، وكيفية التحقق.
إليك قالب موجه يمكنك لصقه عند تسليم العمل إلى المُنفّذ:
You are the Implementer.
Context:
- Feature: <name>
- Current behavior: <what happens today>
- Desired behavior: <what should happen>
- Acceptance criteria: <bullets>
- Constraints: <tech choices, performance, security, no schema change, etc.>
Before writing code:
1) Ask up to 5 questions if anything is unclear.
2) Propose a step-by-step build plan (max 6 steps). Each step must be reversible.
3) For each step, list the exact files/modules you expect to touch.
Then implement:
- Execute steps one by one.
- After each step, summarize what changed and how to verify.
- Do not add extras. If you notice a better idea, stop and ask first.
مثال: إذا طلب المخطط "أضف تدفق بريد إعادة تعيين كلمة المرور"، لا يعيد المُنفّذ تصميم شاشة الدخول أيضًا. بنِ نقطة نهاية طلب البريد الإلكتروني، ثم التعامل بالرمز، ثم الواجهة، مع ملاحظة تحقق قصيرة بعد كل خطوة. إذا كانت أداةك تدعم اللقطات والتراجع (Koder.ai يفعل)، تصبح الخطوات الصغيرة أكثر أمانًا.
مهمة المختبر هي كسر الميزة قبل أن يكسرها المستخدمون. لا يثقون في المسار السعيد. يبحثون عن الحالات غير الواضحة، التحقق المفقود، وحالات الحافة التي تظهر من اليوم الأول.
مخرج المختبر الجيد قابل للاستخدام من قبل الآخرين: مصفوفة اختبار مرتبطة بمعايير القبول، سيناريو يدوي قصير، وتقارير عيوب بخطوات دقيقة (المتوقع مقابل الفعلي).
استهدف التغطية، لا الحجم. ركّز حيث تكون الأخطاء مكلفة: التحقق، الصلاحيات، وحالات الخطأ.
مثال: إذا أضفت "إنشاء فاتورة"، جرّب مبلغًا سالبًا، ملاحظة بطول 10,000 حرف، عميل مفقود، ونقرة مزدوجة لإرسال النموذج.
استخدم هذا عند التسليم من المُنفّذ إلى المختبر. الصق معايير القبول وأي ملاحظات واجهة/API ذات صلة.
ROLE: Tester
GOAL: Produce a test matrix tied to acceptance criteria, including negative tests.
CONTEXT:
- Feature: <name>
- Acceptance criteria:
1) <AC1>
2) <AC2>
- Surfaces: UI screens: <list>; API endpoints: <list>; DB changes: <notes>
OUTPUT FORMAT:
1) Test matrix table with columns: AC, Test case, Steps, Expected result, Notes
2) Negative tests (at least 5) that try to break validation and permissions
3) Manual test script (10 minutes max) for a non-technical person
4) Bug ticket template entries for any failures you predict (Title, Steps, Expected, Actual, Severity)
CONSTRAINTS:
- Keep steps precise and reproducible.
- Include at least one test for loading/error states.
المراجع هو الفحص النهائي للجودة. ليس لإعادة كتابة كل شيء، بل لاكتشاف القضايا الصغيرة التي تتحول لاحقًا إلى أخطاء طويلة: أسماء مربكة، حالات حافة مفقودة، رسائل خطأ ضعيفة، واختصارات خطرة تجعل التغيير التالي أصعب.
مخرج المراجع الجيد ينتج مخرجات واضحة: ما الذي فُحص، ما الذي يجب تغييره، ما المقبول مع مخاطرة، وما هو القرار المتخذ (حتى لا نعيد مناقشته الأسبوع المقبل).
احفظ المرور قصيرًا وقابلًا للتكرار. ركز على الأشياء التي غالبًا ما تكسر الموثوقية:
استخدم هذا عند قول المُنفّذ إن الميزة انتهت:
You are the Reviewer. Do a final review for correctness, clarity, and maintainability.
Context
- Feature goal:
- User flows:
- Key files changed:
- Data model/migrations:
Review checklist
1) Correctness: does it meet the goal and handle edge cases?
2) Security basics: auth, validation, safe logging.
3) Errors: clear messages, consistent status codes.
4) Consistency: naming, patterns, UI text.
5) Maintainability: complexity, duplication, TODOs.
Output format
- Findings (bulleted): include file/function references and severity (high/medium/low)
- Requested changes (must-fix before merge)
- Risk notes (acceptable with reason)
- Decision log updates (what we decided and why)
Finish with exactly one:
APPROVE
CHANGES REQUESTED
إذا طلب المراجع تغييرات، يجب أن تكون صغيرة ومحددة. الهدف هو مفاجآت أقل في الإنتاج، وليس دورة تطوير ثانية.
معظم إعادة العمل تحدث لأن الشخص التالي يبدأ بهدف غامض، مدخلات مفقودة، أو قيود مخفية. قالب تسليم بسيط يصلح ذلك عن طريق جعل كل انتقال متوقعًا.
استخدم رأسًا مشتركًا في كل مرة، حتى للمهام الصغيرة:
إليك مثال تسليم واحد (المعماري -> المُنفّذ):
ROLE HANDOFF: Architect -> Implementer
Context: Add “Invite team member” to the admin area.
Goal: Admin can send an invite email; invited user can accept and set a password.
Inputs: Existing Users table; auth uses JWT; email provider already configured.
Constraints: Go backend + PostgreSQL; React UI; audit log required; no breaking auth changes.
Definition of Done:
- UI: invite modal + success state
- API: POST /invites, POST /invites/accept
- DB: invites table with expiry; audit event on create/accept
- Tests: happy path + expired invite + reused token
Assumptions: Email templates can reuse “reset password” styling.
Open questions: Should invites be single-use per email?
Decisions made: 72h expiry; tokens stored hashed.
إذا أردت أن يلتزم الفريق، خزّن قوالبك في مكان يمكن للجميع نسخه منها. إذا كنت تبني في Koder.ai، يمكنك الاحتفاظ بهذه الموجهات في وضع التخطيط والتقاط لقطة قبل التنفيذ حتى يصبح التراجع أمرًا سهلاً إذا تحول النطاق.
تتحسن الموثوقية عندما تعامل كل ميزة كإصدار مصغر، مع تسليمات نظيفة بين الأدوار. ابدأ بقصة مستخدم واحدة، لا بكومة أفكار. اكتبها بلغة بسيطة، ثم أضف معايير قبول يمكن لأحد التحقق منها دون تخمين.
صمم فقط الحد الأدنى اللازم لدعم تلك القصة. الهدف ليس نظامًا مثاليًا. هو خطة بسيطة لا تنهار عندما تضيف الميزة التالية.
تدفق عملي يبدو هكذا:
اجعل مخرجات كل خطوة صغيرة وصريحة. عادة رسالة تسليم واحدة لكل دور كافية: المدخلات، القرارات المتخذة، وما تحتاجه بعد ذلك.
اختم بكتابة ملاحظة تغيير من فقرة واحدة: ما الذي أُضيف، ما الذي أُزيل، وما الذي يجب مراقبته في الإصدار التالي. هذه "الذاكرة" تمنع عودة نفس الحجج والأخطاء لاحقًا.
الميزة: شاشة CRM بسيطة حيث يمكن للمستخدمين إضافة جهات اتصال، تطبيق علامات (مثل "Lead" أو "Vendor"), والبحث بالاسم أو العلامة. القيد: لديك 90 دقيقة، ويجب إعادة استخدام جدول contacts الحالي (بدون تغييرات هجرة مدمرة). تحتاج الجوال لشاشة "إضافة جهة اتصال" واحدة تتناسب في صفحة واحدة.
إليك كيف يبدو التسليم عند استخدام سلسلة الشخصيات هذه. ينتج كل دور قطعة صغيرة يمكن لليد التالية الوثوق بها.
Planner output (definition + acceptance)
- Goal: Add contacts with tags and fast search.
- Must: Create, edit, list contacts; add/remove tags.
- Search: matches name OR any tag; results update in under 300ms.
- Constraint: keep existing contacts table; tags can be new table.
- Done when: 5 test cases pass; mobile screen has no scroll on common devices.
Architect output (shape + data)
- Tables: contacts (existing), tags (id, name), contact_tags (contact_id, tag_id).
- API: POST /contacts, PATCH /contacts/:id, GET /contacts?query=.
- Search: SQL ILIKE on contact name + join on tags.
- UI: Contact list with search bar; contact form with tag picker.
- Risk: duplicate tags ("lead" vs "Lead") - enforce lowercase unique.
Implementer output (small steps)
- Step 1: Add tags + join table migrations.
- Step 2: Update backend handlers and query.
- Step 3: Build React UI list + form; wire to API.
- Step 4: Add basic validation (name required, tag length).
- Step 5: Add loading/error states; keep UI responsive.
Tester output (proof + failure)
- Case: search "lea" returns contacts tagged "lead". FAIL: returns none.
- Case: adding tag "Lead" then "lead" should not create two tags. PASS.
- Case: empty name rejected. PASS.
- Bug note: backend search only checks contact name, not tags.
Loop-back (Planner update)
- Update acceptance: search must match tags via join; include a test for it.
- Add edge case: searching by tag should return even if name doesn’t match.
Reviewer output (last 10%)
- Check: query uses indexes; add index on tags.name and contact_tags.tag_id.
- Check: error messages are clear; avoid raw SQL errors.
- Check: mobile form spacing and tap targets.
- Confirm: snapshots/rollback point created before release.
ذلك الاختبار الفاشل الواحد يفرض حلقة إعادة واضحة: تتحسن الخطة، يغيّر المُنفّذ استعلامًا واحدًا، ويتأكد المراجع من الأداء والصقل قبل الإصدار.
أسرع طريقة لفقد الثقة في التطبيقات المبنية عبر المحادثة هي ترك الجميع يفعل كل شيء. الأدوار الواضحة والتسليمات النظيفة تجعل العمل متوقعًا، حتى عندما تكون سريعًا.
عادة صغيرة مفيدة: عندما ينتهي المُنفّذ، ألصق معايير القبول مرة أخرى وضع علامة بجانب كل منها.
نفّذ هذه القائمة قبل البناء، قبل الدمج، ومباشرة بعد الشحن.
مثال صغير: "أضف دعوة عبر البريد الإلكتروني." ضمن الحقول (email, role)، ماذا يحدث إذا كان البريد غير صالح، وهل تسمح بإعادة الدعوة.
إذا كانت منصتك تدعم ذلك (Koder.ai يفعل)، التقط لقطة قبل التعديلات الخطرة. معرفة أنه يمكنك التراجع يجعل من الأسهل إصدار تغييرات صغيرة وآمنة.
اختر ميزة صغيرة واحدة ونفّذ سلسلة الشخصيات كاملة مرة واحدة. اختر شيئًا حقيقيًا لكنه محدود، مثل "إضافة إعادة تعيين كلمة المرور"، "إنشاء صفحة خاصة بالمشرف"، أو "تصدير الفواتير إلى CSV". الفكرة أن ترى ماذا يتغير عندما تجبر التسليمات النظيفة من المخطط إلى المراجع.
إذا كنت تستخدم Koder.ai (Koder.ai)، فإن وضع التخطيط مكان عملي لقفل النطاق ومعايير القبول قبل البناء. بعد ذلك، اللقطات والتراجع يمنحانك مخرجًا آمنًا عندما يثبت قرار ما أنه خاطئ، دون تحويل المشروع إلى نقاش طويل.
لجعل سير العمل قابلًا للتكرار، احفظ موجهات الشخصيات كقوالب يمكن لفريقك إعادة استخدامها. اجعلها قصيرة، واحتفظ بصيغ مخرجات متسقة، وستقضي وقتًا أقل على إعادة شرح السياق في كل ميزة.