Skip to content
Announcements10 min read

potato-skill: ابنِ دراسة تعليق توضيحي مع Claude Code أو Codex أو Cursor

يمنح potato-skill وكيل البرمجة 28 ملف مرجع عن Potato، فيصمّم دراسة التعليق التوضيحي، ويبني الواجهة، ويتحقق من أنها تُصيَّر فعلاً.

Potato Team

يحوّل potato-skill وصفاً عادياً لدراسة تعليق توضيحي إلى مهمة Potato قيد التشغيل. وهو يأتي بـ28 ملف مرجع وتسعة سكربتات مساعدة تغطي قرارات التصميم التي تسبق ملف الضبط، والواجهة التي يراها المعلّق، والفحوص التي تكشف المهمة التي تجتاز التحقق لكنها لا تعمل. ويُثبَّت في Claude Code وCodex وCursor، وهو منشور تحت رخصة GPL-3.0-or-later.

تثبيت المهارة

يثبّته Claude Code من سوق إضافات، بأمرين:

text
/plugin marketplace add davidjurgens/potato-skill
/plugin install potato-skill@potato

ويثبّته Codex وCursor عبر أداة skills الطرفية، التي تنسخ المهارة إلى المشروع الذي تعمل فيه:

bash
npx skills add davidjurgens/potato-skill --agent codex cursor

ولا بدّ من تثبيت Potato نفسه حيثما ينفّذ الوكيل الأوامر، لأن السكربتات المساعدة التسعة تستورد سجلّاته وتشغّل أمر potato:

bash
pip install potato-annotation

ما الذي يتضمنه التثبيت على Codex أو Cursor

تكتب أداة skills الطرفية المجلد .agents/skills/potato-skill/ وفيه SKILL.md وكل المراجع الـ28 وكل السكربتات التسعة، فيحصل مشروع Codex أو Cursor على المادة نفسها التي يحصل عليها تثبيت Claude Code. وهي تترك AGENTS.md و.cursor/rules دون مساس، وطريقة اكتشاف كل أداة للمهارة في ذلك المجلد شأن تلك الأداة.

ويحمل المستودع كذلك ملف AGENTS.md في جذره، يقرأه Codex وCursor بالاسم دون أي خطوة تثبيت. وذلك الملف ملخص قصير مقابل نحو 79,000 كلمة موزعة على المراجع، وهو يشير إلى ملفات مرجعية وسكربتات لا يضعها على القرص إلا التثبيت الكامل. استخدمه حين تريد أن يمتلك الوكيل حلقة الفحص قبل التسليم والقواعد التي لها أثر فعلي، واستخدم أداة skills الطرفية حين تريد المادة المرجعية التي وراءها.

الافتراضات التي تتخذها المهارة دون سؤال

يُتَّخذ القرار محلياً حين يكون تصحيح الخطأ رخيصاً، ويُعاد إليك حين يكون الخطأ مكلفاً أو غير قابل للرجوع أو ليس من شأن الوكيل. تغيير اختصار في لوحة المفاتيح لا يكلّف شيئاً، بينما إعادة تشغيل 5,000 عنصر لأن وحدة التعليق كانت خاطئة تكلّف ميزانية الدراسة. وهذه هي الافتراضات التي تأخذها، وكلٌّ منها تدرجه ضمن الفرضيات حين تسلّمك المهمة:

القرارالافتراضي
نقاط المقياس5، مع تسمية كل نقطة، ما لم تحدّد عدداً
اختصارات لوحة المفاتيحمفعّلة في أي سؤال بتسعة تصنيفات أو أقل
ترتيب الأسئلةالسؤال البوّابة أولاً، والأسئلة التابعة خلف display_logic
ترتيب العناصرعشوائي، مع random_seed ثابت
الحقول المطلوبةكلها، مع require_fully_annotated: true
صفحة التعليماتمسودة مكتوبة من وصفك، مؤشَّر عليها بأنها مسودة

القرارات التي تعيدها إليك

تعود خمسة قرارات إلى الباحث في رسالة واحدة مجمّعة، ولكلٍّ منها جواب مقترح حتى يمكن قبوله بكلمة واحدة:

  • وحدة التعليق، حين لا تحسمها البيانات. ملفٌّ من الفقرات والسؤال في حقيقته عن الجمل مفترقُ طرق في الدراسة، وأيّ الاختيارين قد يعني إعادة تشغيلها.
  • عدد المعلّقين لكل عنصر، حين سيجري الإبلاغ عن الاتفاق. ثلاثة معلّقين يكلّفون ثلاثة أضعاف معلّق واحد، فتقترح المهارة عدداً مع سببه بدل أن تنفق الميزانية عنك.
  • صياغة الموافقة المستنيرة. تكتب مسودة مما وصفته، وتقول صراحةً إن المسودة تحتاج إلى استبدالها بالنص الذي أقرّته لجنة أخلاقيات البحث لديك.
  • مجموعة تصنيفات بلا موضع للحالات الصعبة. ثلاثة تصنيفات بلا "غير واضح" وبلا "لا شيء" سهوٌ في الغالب، فيضع المعلّقون العناصر الملتبسة فعلاً في موضع اعتباطي، حيث لا يستطيع شيء لاحق أن يرى أن ذلك حدث. وتسمّي المهارة العناصر التي ترى أن لا موضع لها.
  • أي شيء يعرض أسماء مستخدمين أو وجوهاً أو مواقع على المعلّقين.

ولا شيء من هذا يوقف البناء. تعلن المهارة فرضياتها، وتبني المهمة، وتتحقق منها، وتطرح الأسئلة إلى جانب شيء تستطيع أصلاً أن تنقر خلاله.

الفحوص قبل التسليم

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

bash
potato validate config.yaml --strict
potato preview config.yaml --screenshot shot-01.png

يحوّل --strict مفتاحَ ضبط غير معروف من تحذير إلى إخفاق. وبدونه يُقبل الخطأ المطبعي ويُتجاهل، وتبقى الميزة التي ظننت أنك فعّلتها معطّلة، وهذا هو السبب المعتاد لملف ضبط يُقرأ قراءة سليمة بينما لا يحدث شيء.

ويقلع --screenshot بخادم Potato حقيقي ويقوده في Playwright بلا واجهة رسومية، مسجّلاً أخطاء وحدة تحكم المتصفح، واستثناءات الصفحة غير المعالَجة، واستجابات HTTP بقيمة 400 فما فوق. ولا يخرج بالرمز 0 إلا حين تكون القوائم الثلاث كلها فارغة. وتلك الخطوة تكشف ما لا يستطيع التحقق كشفه، لأن معظم واجهة التعليق تبنيها JavaScript بعد وصول HTML. وزرّ الاختيار المفرد غير المرئي هو الحالة النموذجية، إذ يبقى نص التصنيف مصيَّراً ويبدو السؤال سليماً للوهلة الأولى.

والدورة حول هذين الأمرين إرشاد لا أتمتة. تقول المادة المرجعية للوكيل أن يجري تغييراً واحداً في كل جولة، وأن يكتب كل تصيير إلى اسم ملف جديد حتى يُظهر الزوجُ أثرَ التغيير، وأن يتوقع ثلاث أو أربع جولات على تخطيط مخصص. وتقول له كذلك إن أي شيء خلف display_logic غائب عن التصيير الأول وإن غيابه لا يثبت شيئاً، فيُعطَّل الشرط بالتعليق، ويُصيَّر، ثم يُعاد.

وثلاثة من السكربتات المساعدة التسعة تؤتمت الأجزاء التي يمكن قياسها لا الحكم عليها. يقيس check_ui.py التخطيط الحيّ عند 1280x900 ويبلّغ عن المخططات أو زرّ Next تحت طيّة الشاشة، وعن عناصر الوسائط الفارغة، والاختصارات المكررة. ويشغّل boot_and_check.py الخادم ويبلّغ عن كل ميزة مضبوطة لم تحمّل شيئاً، مثل جولة تدريب حمّلت صفر عناصر تدريب. ويمشي walk_task.py في مهمة قيد التشغيل كما يمشي فيها المعلّق ويبلّغ عن الموضع الذي يتوقف عنده.

التغييرات الآمنة وغير الآمنة بعد أن يبدأ المعلّقون

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

وإعادة تسمية سؤال في منتصف الدراسة أشدّها. لا شيء يخطئ، ثم تبلّغ ثلاث واجهات بثلاثة أشياء مختلفة. تقول نظرة المشرف العامة إن الدراسة مكتملة 100%، ويقول تقرير الاتفاق إن ذلك المخطط بلا عناصر، ويحمل تصدير CSV اسم العمود القديم، لأن التصديرات تقودها البيانات المخزَّنة لا ملف الضبط. وسطر WARNING واحد في سجل الإقلاع هو شبكة الأمان كلها. ولإضافة سؤال نسخة أهدأ من المشكلة نفسها، لأن Potato يتتبع الإنجاز لكل عنصر لا لكل سؤال، فالسؤال المضاف لاحقاً لا يصل أبداً إلى من أنهى المتن سلفاً.

والمصادقة هي الثانية. تحفظ الواجهة الخلفية الافتراضية الحسابات في الذاكرة، فإيقاف الخادم يأخذ معه كل تسجيلات دخول المعلّقين بينما تبقى التعليقات سالمة على القرص. يعود المعلّق، ويسجّل من جديد بالاسم نفسه، فيُعاد ربطه بعمله، وهذا يخفي المشكلة إلى أن يكتب أحدهم اسم مستخدم مختلفاً فيبدأ المتن من جديد بوصفه شخصاً ثانياً. وضبط authentication.user_config_path يكتب الحسابات إلى القرص ببصمة مملَّحة. وهو يهمّ أشدّ ما يهمّ حيث يسهل نسيانه، إذ تعيد Render وHugging Face Spaces تشغيل الحاويات من تلقاء نفسها.

ولدراسة جارية بالفعل، يقرأ study_status.py مسارات المشرف ليعطي التقدّم، ومعدلات كل معلّق، والاتفاق على كل سؤال، ومن يخفق في فحوص الانتباه، ومن يحتجز عناصر تخلّى عنها. ثم تقول المهارة أيّ الإصلاحات ما يزال آمناً وأيّها سيفسد إجابات دفعتَ ثمنها بالفعل.

خوادم MCP في Potato

يأتي Potato بخادمي MCP يعطيان الوكيل الأجوبة نفسها دون الخروج إلى الصدفة. يعرض potato mcp serve --root . 12 أداة تأليف تقرأ السجلّات نفسها التي تقرأها واجهة سطر الأوامر، ومنها render_task_screenshot التي تعيد الصفحة المصيَّرة صورةً. ويجسر potato mcp connect دراسةً قيد التشغيل ويضيف 12 أداة حيّة تغطي الحالة والتقدّم والمعلّقين والاتفاق والإسناد والتصدير. ويحتاج الجسر إلى كتلة mcp في ملف الضبط تسرد الأدوات المراد عرضها، وإلى رمز من potato mcp issue-token.

أدوات التصنيف المكتوبة يدوياً وما تكلّفه

من الطرق الشائعة لتصنيف بضع مئات من العناصر أن تطلب من وكيل برمجة أداة تصنيف سريعة، مثل صفحة Streamlit أو Flask تعرض عنصراً واحداً في كل مرة وتلحق كل إجابة بملف CSV. وهذا شيء معقول أن تبنيه حين يصنّف شخص واحد بيانات يوم واحد مرةً واحدة. وتأتي الكلفة حين تحتاج الدراسة إلى تسجيل دخول لكل معلّق، وثلاثة معلّقين لكل عنصر مع توجيه كل عنصر إلى الأشخاص الصحيحين، وجولة تدريب وفحوص انتباه، وإحصاءات اتفاق، ورمز إتمام لـ Prolific، وتصدير بالصيغة التي يتوقعها السكربت التالي، أو دراسة ثانية الشهر المقبل تعمل بالطريقة نفسها. وكل واحدة من هذه ميزة يكتبها أحدهم ويختبرها وينقّحها داخل أداة بُنيت لدراسة واحدة، وPotato يملكها كلها أصلاً.

وتختلف الاثنتان كذلك فيما يبقى بعد انتهاء الدراسة. أداة التصنيف المكتوبة يدوياً مرتبطة عادةً بمجموعة بيانات واحدة في مستودع واحد، بينما مهمة Potato مجلد يحمل ملف ضبط وبيانات يستطيع أي من لديه Potato أن يبدأها. ويضم المعرض أكثر من 400 منها، معظمها مأخوذ من أوراق منشورة، ويبحث فيه find_design.py عن تصميم قريب مما وصفته.

الدراسات التي تُعدّها المهارة

خمس حالات تبيّن المدى، كلٌّ منها تبدأ من وصف قصير وتنتهي بمهمة قابلة للتشغيل:

الاختبارات مقابل سجلّات Potato

المعرّف الخاطئ المعقول أسوأ من انعدام التوثيق، لأن الوكيل سيستخدمه. ولذلك تُولَّد ثلاثة من المراجع الـ28 من سجلّات Potato نفسها ولا تستطيع أن تنحرف عمّا يفرضه الخادم: أنواع التعليق الـ61 كلها، ولكلٍّ منها مثال معمول مأخوذ من مشروع حقيقي، ومفاتيح الضبط العليا الموثّقة، والمفاتيح الفرعية الموثّقة.

ويغطي التكامل المستمر ملفات المهارة الأساسية، فيتحقق من أن كل نوع تعليق ونوع عرض ومفتاح ضبط ومُعامِل واسم استراتيجية وأمر مذكور فيها موجود في Potato. وتُدمج كل عيّنة YAML في ملف ضبط عامل وتُمرَّر عبر المدقّق الحقيقي في Potato، ويقلع المثال المعمول بخادم حقيقي حيث يجب أن تبلّغ كل ميزة يشغّلها عن عدد غير صفري في السجل.

والمادة المرجعية منشورة على davidjurgens.github.io/potato-skill، فتستطيع أن تقرأ ما تقوله المهارة للوكيل قبل تثبيتها. وتوصي Anthropic بمراجعة أي مهارة أولاً.

أسئلة

هل يلزمني أن أعرف Potato أولاً؟

لا. تصف الدراسة بلغة عادية، ويجب أن يكون Potato مثبَّتاً على الجهاز الذي ينفّذ عليه الوكيل الأوامر. وقبل أن يرى المعلّقون المهمة، افتحها في متصفح وصنّف بضعة عناصر بنفسك.

هل أستطيع استخدام potato-skill مع Codex أو Cursor؟

نعم، بأيٍّ من الطريقين. يضع npx skills add davidjurgens/potato-skill --agent codex cursor المهارةَ كاملةً في المشروع، ويعطي ملف AGENTS.md في المستودع نسخة أقصر بلا أي تثبيت. وقد كُتبت المهارة من أجل Claude Code، وفيه يوجد التثبيت من السوق.

هل الأفضل أن أطلب من وكيل البرمجة أن يبني أداة تعليق مخصصة بدلاً من ذلك؟

لبضع مئات من العناصر يصنّفها شخص واحد مرةً واحدة، يكفي سكربت صغير. وحين تحتاج الدراسة إلى عدة معلّقين لكل عنصر، أو تدريب، أو فحوص انتباه، أو اتفاق، أو منصة تعهيد جماعي، فكل واحدة من هذه يجب أن تُبنى وتُختبر. ويقوم potato-skill على Potato الذي يملكها أصلاً، والمهمة التي ينتجها يمكن إعادة تشغيلها ومشاركتها.

هل أستطيع تعديل ما يبنيه؟

نعم. المخرَج مهمة Potato عادية، مجلد يحمل ملف ضبط وبيانات وتعليمات. عدّله يدوياً بالاستعانة بـالبدء السريع وأساسيات الضبط، أو اطلب من الوكيل تغييره.

كم يكلّف؟

لا شيء. Potato مجاني ومفتوح المصدر، وpotato-skill منشور تحت رخصة GPL-3.0-or-later. أنت تدفع مقابل وكيل البرمجة الذي تستخدمه أصلاً، ومقابل المعلّقين إن جنّدتهم.

ما هو Potato؟

Potato أداة تعليق توضيحي مفتوحة المصدر من جامعة ميشيغان، موصوفة في عرض نظام في ACL 2026. وهي تدعم 61 نوع تعليق عبر النص والصور والصوت والفيديو والحوار وتتبّعات الوكلاء.

قراءات إضافية

المراجع

David Jurgens, Michael Chen, and Lina Iyer (2026). Potato 2.0: A Comprehensive Annotation Platform with AI-in-the-Loop Support. Proceedings of the 64th Annual Meeting of the Association for Computational Linguistics (Volume 3: System Demonstrations). https://aclanthology.org/2026.acl-demo.37/